繁体   English   中英

Linq To Entities在where子句中的错误SQL转换

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM