LinqTo实体where子句中的SQL强制转换不正确
本文关键字:转换 不正确 SQL 实体 where 子句 LinqTo | 更新日期: 2023-09-27 18:19:33
我刚刚遇到了一个关于Linq-To实体的奇怪问题。背景如下:-实体代码优先-此实体映射到SQL Server视图
在尝试诸如之类的deffered执行时
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));
解决了问题!