設置信息:MySQL的LINQ的使用。載有(可變)
- VS2013/C#
- EF6
- MySQL數據庫
- 的.Net連接器6.9.5
我試圖創建一個方法,使用部分名稱作爲搜索條件返回一組帳戶記錄。如果我使用IQueryable .Contains()擴展方法硬編碼字符串值,它會返回數據。但是,當我嘗試使用變量時,沒有返回數據。
Public class Test() {
MyEntities db = new MyEntities();
//Works....but the search criteria is hard coded.
public IQueryable<Account> WorksButValueHardCoded() {
return (from a in db.Accounts
where a.accountname.Contains("Test")
select a);
}
//Does not return anything
public IQueryable<Account> DoesNotReturnAnyData() {
//Obviously I would use a parameter, but even this test fails
string searchText = "Test";
return (from a in db.Accounts
where a.accountname.Contains(searchText)
select a);
}
}
我可以看到在LINQ生成的SQL使用LIKE操作,但我不明白的變量是如何注入,因爲它記載:
SELECT
`Extent1`.`accountid`,
`Extent1`.`accountname`
FROM `account` AS `Extent1`
WHERE `Extent1`.`accountname` LIKE '%p__linq__0%'
所以...爲什麼它的工作原理與硬編碼值,而不是一個字符串變量?
請包括您提交給MySQL的錯誤。我遇到同樣的問題 – Ablue 2015-01-07 06:33:44
這裏是:http://bugs.mysql。com/bug.php?id = 75137 – Ablue 2015-01-07 08:04:43
看到相同的問題w/6.9.5,回滾到「Install-Package MySql.Data.Entities.EF6」,它是6.8.3,如@Ablue註釋中所述(也是:http ://bugs.mysql.com/bug.php?id=75193和http://bugs.mysql.com/bug.php?id=74918和http://bugs.mysql.com/bug.php?id= = 74943)唷! – sobelito 2015-01-19 21:35:02