可以让NHibernate以EF作为执行查询吗?

时间:2011-12-08 10:29:01

标签: nhibernate

是否有使用NHibernate的方式,只有在使用查询/语句的返回对象时才会执行查询/查询..就像EF执行它一样? / p>

对于EF的大多数实例,在使用linq-“statement”的返回对象之前,它不会向数据库发送和执行实际查询...例如:

var x = for e in entities.MyTable
select e;

这个aint已经执行了!
哪个meens能够mofidy x-objects“linq-query”然而我喜欢没有实际“拉”数据库中的任何数据:

x = x.Where(i=>i.SomeThing = someThing);

还是执行了!

x.ToList<MyTable>()

现在执行了!

但是在NHibernate中,一旦事务被关闭或者从我所知道的内容中提交,查询就会被执行..在大多数情况下,已经在存储库中完成了。因此,您不能简单地在任何其他地方更改查询,然后将其发送到数据库。因为查询已经发送,这意味着你以后只会改变结果中“显示”的内容。

我可能已经弄错了所以如果我错了请纠正我。

提前非常感谢!

1 个答案:

答案 0 :(得分:0)

你可以使用分离的QueryOver

尝试这样的事情
var query = QueryOver.Of<Customer>()
    .Where(x => x.LastName == "Smith"); // query is not executed yet

query.GetExecutableQueryOver(session).List();

好的是你可以传递QueryOver对象并在其他地方执行它。