只读模式下的NHibernate Linq

只读模式下的NHibernate Linq,nhibernate,Nhibernate,是否可以在使用NHibernate的Linq提供程序加载的实体上设置只读模式 例如,可以使用Session.QueryOver执行以下操作(我相信也可以使用Criteria): Session.Query是否有等效项可用?如文档中所述: 更改默认行为以使NHibernate加载实体实例 将可变类添加到会话中,并自动使其 只读,请拨打: 将默认值更改回原来的值,以便不显示NHibernate加载的实体 设置为只读,请拨打: 因此,在调用Session.Query之前…callSession.Def

是否可以在使用NHibernate的Linq提供程序加载的实体上设置只读模式

例如,可以使用Session.QueryOver执行以下操作(我相信也可以使用Criteria):


Session.Query是否有等效项可用?

如文档中所述:

更改默认行为以使NHibernate加载实体实例 将可变类添加到会话中,并自动使其 只读,请拨打:

将默认值更改回原来的值,以便不显示NHibernate加载的实体 设置为只读,请拨打:


因此,在调用
Session.Query之前…
call
Session.DefaultReadonly=true
,因为此设置指向
ISession
,而不是位于其上的提供者。

如果您需要只读会话,更好的方法是:

Session.DefaultReadOnly=true-在这种情况下,NHibernate将累积实体的所有更新(调用所有侦听器e.t.c.)


在这种情况下,NHibernate不会给任何听众打电话,因为我知道

谢谢!我不知道这个会话级别设置。奇怪的是,他们如何为Criteria和QueryOver实现一个“只读”操作符,而不是Linq提供程序。@DanP,这将是一个很好且易于实现的功能。您可以在打开一个问题。来源是在。这可能包括对
LinqExtensionMethods
NhQueryable
@DiegoMijelshon的更改-我已经打开了以下问题:
Session.QueryOver(Of Foo)().ReadOnly()
Session.DefaultReadOnly = true;
Session.DefaultReadOnly = false;
session.FlushMode = FlushMode.Never