Sto usando ASP.NET Web API Core con EF Core per creare un metodo, che restituisce i record in formato JSON.
Quando utilizzo contiene per operatore simile (% varible%) , si è verificato un errore con il seguente messaggio:
Un'eccezione di tipo "MySql.Data.MySqlClient.MySqlException" si è verificata in Microsoft.EntityFrameworkCore.dll ma non è stata gestita nel codice utente
Ulteriori informazioni: si è verificato un errore nella sintassi SQL; controlla il manuale che corrisponde alla tua versione del server MySQL per la sintassi corretta da usare vicino a '+'% '
ORDINE DI
p
.StoreId
,p
.CategoryId
'alla riga 4
Sembra che uno dei simboli % non sia nella giusta posizione.
Ho controllato i miei codici e l'output raw SQL, ma non ho riscontrato alcun problema.
Spero che qualcuno possa aiutarmi!
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 raw
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 Professional x64
Visual Studio 2015 Professional
MySQL 5.6.17
Microsoft .NET Core 1.0.1
con dipendenze
"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"
Ho scoperto che la modifica di MySql.Data.EntityFrameworkCore da "7.0.6-IR31" a "6.10.0-alpha" produrrà una sintassi SQL valida.
6.10.0-alpha è più nuovo.
Tuttavia, si verifica un altro problema. Si prega di vedere qui.
usa parametro dall'argomento del metodo all'interno di linq contiene
Penso che non ci sia altra scelta che aspettare che il bug venga corretto dall'aggiornamento.