是否有使用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
中,一旦事务被关闭或者从我所知道的内容中提交,查询就会被执行..在大多数情况下,已经在存储库中完成了。因此,您不能简单地在任何其他地方更改查询,然后将其发送到数据库。因为查询已经发送,这意味着你以后只会改变结果中“显示”的内容。
我可能已经弄错了所以如果我错了请纠正我。
提前非常感谢!
答案 0 :(得分:0)
你可以使用分离的QueryOver
尝试这样的事情var query = QueryOver.Of<Customer>()
.Where(x => x.LastName == "Smith"); // query is not executed yet
query.GetExecutableQueryOver(session).List();
好的是你可以传递QueryOver对象并在其他地方执行它。