EF Core MySQL包含(變量)like運算符

asp.net-core-webapi entity-framework entity-framework-core mysql

我正在使用帶有EF Core的ASP.NET Web API Core來創建一個返回JSON格式記錄的方法。
當我使用包含 類似運算符(%varible%)時 ,出現錯誤,消息如下:

Microsoft.EntityFrameworkCore.dll中出現“MySql.Data.MySqlClient.MySqlException”類型的異常,但未在用戶代碼中處理

其他信息:您的SQL語法中有錯誤;檢查與您的MySQL服務器版本對應的手冊,以便在'+'%附近使用正確的語法

ORDER BY pStoreIdpCategoryId 4行的CategoryId '

似乎符號中的一個不在正確的位置。
我檢查了我的代碼和原始sql輸出,但沒有看到任何問題。
希望可以有人幫幫我!

var query = from p in db.Products
            join c in db.ProductCategory
                   on new { p.StoreId, p.CategoryId } equals new { c.StoreId, c.CategoryId } into pc
            from c in pc.DefaultIfEmpty()
            where (p.ProductName.Contains("a"))
            select p;  

query.ToList()

原始SQL

SELECT `p`.`StoreId`, `p`.`ProductId`, `p`.`CategoryId`, `p`.`Description`, `p`.`ImagePath`, `p`.`ProductName`, `p`.`SalesPeriodFrom`, `p`.`SalesPeriodNeverEnd`, `p`.`SalesPeriodTo`, `p`.`SalesUnit`, `p`.`UnitPrice`, `c`.`StoreId`, `c`.`CategoryId`, `c`.`CategoryName`
FROM `Products` AS `p`
LEFT JOIN `ProductCategory` AS `c` ON (`p`.`StoreId` = `c`.`StoreId`) AND (`p`.`CategoryId` = `c`.`CategoryId`)
WHERE `p`.`ProductName` LIKE ('%' + 'a') + '%'
ORDER BY `p`.`StoreId`, `p`.`CategoryId`

Windows 7專業版x64
Visual Studio 2015專業版
MySQL 5.6.17

Microsoft .NET Core 1.0.1
與依賴

   "Microsoft.ApplicationInsights.AspNetCore": "1.0.2",
   "Microsoft.AspNetCore.Mvc": "1.0.1",
   "Microsoft.AspNetCore.Routing": "1.0.1",
   "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
   "Microsoft.AspNetCore.Server.Kestrel": "1.0.1",
   "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
   "Microsoft.Extensions.Configuration.FileExtensions": "1.0.0",
   "Microsoft.Extensions.Configuration.Json": "1.0.0",
   "Microsoft.Extensions.Logging": "1.0.0",
   "Microsoft.Extensions.Logging.Console": "1.0.0",
   "Microsoft.Extensions.Logging.Debug": "1.0.0",
   "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
   "MySql.Data.EntityFrameworkCore": "7.0.5-IR21",
   "System.Linq.Dynamic.Core": "1.0.6.6"

一般承認的答案

我發現將MySql.Data.EntityFrameworkCore從“7.0.6-IR31”更改為“6.10.0-alpha”將導致有效的SQL語法。

6.10.0-alpha更新。

但是,會出現另一個問題。請看這裡。

使用linq中包含的方法參數的參數

我認為除了等待更新修復bug之外別無選擇。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow