首页 新闻 会员 周边 捐助

ef,mysql,contains生成的語句有問題!

0
悬赏园豆:30 [已解决问题] 解决于 2015-03-11 11:14

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  少了 @ 前綴。。導致參數變成字符串了

滴答的雨的主页 滴答的雨 | 老鸟四级 | 园豆:3660
提问于:2015-03-11 10:44
< >
分享
最佳答案
1

mysql的参数化应该是?而不是@吧。生成的语句确实有问题。

http://stackoverflow.com/questions/27338108/mysql-linq-using-containsvariable 看下这个答案,说是用 a.QueueHostName == name  你试试呢~

收获园豆:30
幻天芒 | 高人七级 |园豆:37205 | 2015-03-11 10:52

谢谢。我想要like模糊查询。不过我在ef下生成的语句真是@,没注意这个,我再看看,数据是访问到了mysql,就是where失效了。

我看看你给的帖子

滴答的雨 | 园豆:3660 (老鸟四级) | 2015-03-11 10:58

@滴答的雨: 你可以试试==,看看是不是生成的like。

幻天芒 | 园豆:37205 (高人七级) | 2015-03-11 11:12

ok,这个帖子第二个回答解决了这个问题,不过sql语句生成的会有点奇怪,还好,先用着,等这个bug修复吧

 

滴答的雨 | 园豆:3660 (老鸟四级) | 2015-03-11 11:13

@滴答的雨: 够变态的做法。。

幻天芒 | 园豆:37205 (高人七级) | 2015-03-11 11:16

@幻天芒: ==不行,生成的还是=。 WHERE `Extent1`.`QueueHostName` = @p__linq__0。

滴答的雨 | 园豆:3660 (老鸟四级) | 2015-03-11 11:22

@滴答的雨: 你是在 stackoverflow.com 这个站点搜索的问题吗?还是用搜索殷勤搜索到得。我杂滴没搜索到。有什么高招不

滴答的雨 | 园豆:3660 (老鸟四级) | 2015-03-11 11:23

@滴答的雨: google搜索。

幻天芒 | 园豆:37205 (高人七级) | 2015-03-11 11:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册