3

私はEFコアでASP.NET Web APIコアを使用してJSON形式のレコードを返すメソッドを作成しています。EFコアMySQLのような(可変)オペレータ

Microsoft.EntityFrameworkCoreで発生型 'MySql.Data.MySqlClient.MySqlException' の例外:
私はオペレータ等(%のvarible%)をためが含ま使用し、エラーが以下のメッセージで発生しました.dllはユーザーコードで処理されませんでした

追加情報:SQL構文に誤りがあります。あなたのMySQLサーバのバージョンに対応するマニュアルをチェックし、正しい構文が '%'の近くで使用されるようにしてください。

ORDER BY pStoreId,p。ライン4

CategoryId 'はシンボルが正しい位置にない%のいずれかと思われます。
コードとraw 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 Professionalの
のMySQL 5.6.17

のMicrosoft .NETのコア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" 
+0

クエリ可能に設定して、where述語を適用しようとしましたか? –

+0

私は同じ問題を抱えていますが、解決策を見つけましたか? – shahaf

答えて

1

「7.0.6-IR31」から「6.10.0-alpha」にMySql.Data.EntityFrameworkCoreを変更すると、有効なSQL構文が得られることがわかりました。

6.10.0-alphaは新しくなりました。

ただし、別の問題が発生します。こちらをご覧ください。

use parameter from method argument inside linq contains

私はバグは更新プログラムで修正されるのを待つしかないがないことだと思います。

+0

ありがとうございます。私の問題が修正されました。 –