ef 6.1.2 版本
mysql.data 6.9.5
mysql.data.entity.ef6 6.9.5
var items = from a in msg.msgqueuelog
where a.QueueHostName.Contains(name)
select a;
var item = items.ToList();
生成的語句:
SELECT
`Extent1`.`LogId`,
`Extent1`.`DateTime`,
`Extent1`.`MsgSource`,
`Extent1`.`QueueHostName`,
`Extent1`.`ChannelKey`,
`Extent1`.`DtoStr`
FROM `msgqueuelog` AS `Extent1`
WHERE `Extent1`.`QueueHostName` LIKE '%p__linq__0%'
參數 p__linq__0 少了 @ 前綴。。導致參數變成字符串了
mysql的参数化应该是?而不是@吧。生成的语句确实有问题。
http://stackoverflow.com/questions/27338108/mysql-linq-using-containsvariable 看下这个答案,说是用 a.QueueHostName == name 你试试呢~
谢谢。我想要like模糊查询。不过我在ef下生成的语句真是@,没注意这个,我再看看,数据是访问到了mysql,就是where失效了。
我看看你给的帖子
@滴答的雨: 你可以试试==,看看是不是生成的like。
ok,这个帖子第二个回答解决了这个问题,不过sql语句生成的会有点奇怪,还好,先用着,等这个bug修复吧
@滴答的雨: 够变态的做法。。
@幻天芒: ==不行,生成的还是=。 WHERE `Extent1`.`QueueHostName` = @p__linq__0。
@滴答的雨: 你是在 stackoverflow.com 这个站点搜索的问题吗?还是用搜索殷勤搜索到得。我杂滴没搜索到。有什么高招不
@滴答的雨: google搜索。