【发布时间】:2018-08-01 18:59:29
【问题描述】:
每当我需要用同一个值过滤多个值时,如下:
.Where(lead => lead.UpdateDate >= lastupdatedDate
|| lead.Address.lasUpdateDate >= lastupdatedDate
)
它会生成这样的东西:
select *
from lead
where UpdateDate >= @p__linq__1
or lasUpdateDate >= @p__linq__2
然后将值传递两次。有没有办法让生成的 sql 更干净,只通过 lastupdatedDate 一次并重用变量?
【问题讨论】:
-
我认为这不可能或不可取。我怀疑 EF 正在创建单独的参数,因为它很简单。任何合并参数的逻辑都会增加包含多个参数的所有查询的查询生成开销,即使没有重叠。
-
解决这个问题并不是很好地利用你作为程序员的时间。 The Sad Tragedy of Micro-Optimization Theater。 ...这可能是让自己陷入微优化剧院最可悲的事情——它分散了你真正目标的注意力:编写更好的代码。
标签: c# sql entity-framework-6