我有一个类代表已定义的数据库中的表:
public class MyClass{
public int MyClassId{get;set;}
public string Name{get;set;}
public string LastNamw{get;set;}
public DateTime From{get;set;}
public DateTime To{get;set;}
}
我想在其上对 Oracle 数据库运行一些搜索查询。
现在的问题是:
var list = context.MyClass
.Where(x => x.From>= FromMyDate)
.Where(x => x.To <= ToMyDate);
var list = context.MyClass
.Where(x => x.From>= FromMyDate && x.To <= ToMyDate);
使用带有where条件的多行还是单行更好?为什么...请
据我了解,当我想搜索第一个条件的结果时,我会使用多个where子句。
应该没关系
您只需创建一个传递给 Oracle 提供程序的表达式树,创建结果 SQL 查询是提供程序的工作。尽管两者之间的表达式树略有不同,但它仍然应该产生相同的 sql。我喜欢使用 sql profiler 来确保我的 linq 查询生成高效的 sql。
我将关注 Vossad01 发布的 John Skeet 回答。
根据我的经验,如果使用具有导航属性的多个“where”子句,EF 会为 EF 6 生成多个联接。您可以使用 EF Profiler 获取查询。我总是用这个神奇的工具检查查询。如果您使用 EF 6,我建议您不要相信结果:)