【发布时间】:2014-12-23 20:50:47
【问题描述】:
所有相关代码的要点:https://gist.github.com/JamesGould123/2207bcec618cac8a3926
在 Linq to 实体中,contains 不适用于预存储的字符串。出于某种原因,
string queryStr = "AB7";
var viewModel6 = (from n in db.TableName
where n.TableCol.Contains(queryStr)
select n.TableCol);
返回查询字符串
{SELECT
`Extent1`.`TableCol`
FROM `TableName` AS `Extent1`
WHERE `Extent1`.`TableCol` LIKE '%p__linq__0%'}
它意外地将变量queryStr 替换为p__linq__0。
然而,
var viewModel5 = (from n in db.TableName
where n.TableCol.Contains("AB7")
select n.TableCol);
返回查询字符串
{SELECT
`Extent1`.`TableCol`
FROM `TableName` AS `Extent1`
WHERE `Extent1`.`TableCol` LIKE '%AB7%'}
正如预期的那样。
预存变量在我的办公室计算机上运行良好,但在我的家用计算机上却没有这样的运气。为什么这两段代码没有编译成同一个查询?如何让第一个与第二个编译相同?
更新:我去办公室并在包文件夹上运行 git add(我们有 .dlls gitignored)并备份数据库,回家,拉动,使用备份重新创建数据库,一切又恢复了。我认为这是其中一个 MySQL 软件包版本的问题。如果有人有真正的解决方案,我会留下这个问题。
【问题讨论】:
-
@GertArnold 将我的问题更新为更详细:为什么这两段代码没有编译为同一个查询?如何让第一个与第二个编译相同?
标签: c# mysql linq entity-framework