[英]Linq To Entities bad SQL casting in where clause
我刚刚在Linq To Entities中遇到了一个奇怪的问题。 背景如下:-实体代码优先-该实体映射到SQL Server视图
尝试执行延期执行时,例如
byte id = 1;
var query = myDbSet.Where(s => s.SiteId == id);
query = query.Where(s => s.Type == "Some Type");
var lst = query.ToList();
我从SQL Server收到超时(查询持续1分钟)。
分析SQL查询时,我看到从SiteId到int的奇怪转换,而它是tinyint。 通过执行相同的查询删除强制转换,查询将持续3秒钟!
如何强制参数类型不进行SQL转换?
通过以下方式更改Where子句:
var query = MyDbSet.Where( s => id.Equals(s.SiteID));
解决了这个问题!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.