使用nHibernate QueryOver,如果我想对性能进行强制执行,那么“Select”和“Where”是一回事吗?换句话说,将... ..
var member = session.QueryOver<Member>()
.Select( projections => projections.Email == model.Email )
.Take(1).SingleOrDefault();
运行与
相同 var member = session.QueryOver<Member>()
.Where( context => context.Email == model.Email )
.Take(1).SingleOrDefault();
或者这两者有区别吗?
答案 0 :(得分:1)
Select
项目(您也可以说地图); Where
个过滤器。这与SQL和所有LINQ提供程序(以及QueryOver也是LINQ提供程序)相同。在这种情况下,您似乎想要过滤而不是项目,因此您需要Where
答案 1 :(得分:1)
没有违法行为,但我认为回答问题的最好方法是尝试一下。有时候,当你看到输出时,事情会变得更加清晰。
也就是说,当你使用Select
时,你告诉NHibernate如何投影你的数据。这决定了查询产生的数据的最终组成。还有一点,但这是一般的想法。如果要指定要查询的数据应满足的条件,请使用Where
。