我在这里找到了一个关于实体框架的相关问题 - Why is Entity Framework passing a parameter as DECIMAL(5,0) for a column defined with NUMERIC(19)? - 但是答案解释了这是实体框架的常规行为。
在LinqToEntities查询中,例如:
var query = (from x in ctx.bigProduct.AsNoTracking()
where x.ListPrice == v
select x);
实体框架转换参数" v"使用不同的精度。在我的尝试中,有时翻译为十进制(2,2),有时翻译为十进制(5,2),例如。
问题在于参数类型的这种差异导致重新编译可以从查询计划缓存中重用的查询,同时也会创建计划缓存膨胀。
如何避免参数类型的这种差异?