nHibernate QueryOver项目 - 是Select和Where相同的东西?

时间:2011-06-08 23:45:54

标签: nhibernate nhibernate-projections

使用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();

或者这两者有区别吗?

2 个答案:

答案 0 :(得分:1)

Select项目(您也可以说地图); Where个过滤器。这与SQL和所有LINQ提供程序(以及QueryOver也是LINQ提供程序)相同。在这种情况下,您似乎想要过滤而不是项目,因此您需要Where

答案 1 :(得分:1)

没有违法行为,但我认为回答问题的最好方法是尝试一下。有时候,当你看到输出时,事情会变得更加清晰。

也就是说,当你使用Select时,你告诉NHibernate如何投影你的数据。这决定了查询产生的数据的最终组成。还有一点,但这是一般的想法。如果要指定要查询的数据应满足的条件,请使用Where