0

使用 nHibernate QueryOver,如果我想强制执行性能预测,“选择”和“在哪里”是一回事吗?换句话说,将..

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

还是两者有区别?

4

2 回答 2

1

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

于 2011-06-09T00:15:42.473 回答
1

无意冒犯,但我认为回答您提出的问题的最佳方法是尝试一下。有时,当您可以看到输出时,事情会变得更加清晰。

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

于 2011-06-09T00:49:29.427 回答