NHibernate Linq处于只读模式

时间:2013-05-29 14:19:03

标签: nhibernate

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

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

Session.QueryOver(Of Foo)().ReadOnly()

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

2 个答案:

答案 0 :(得分:8)

如文档10.1.2. Loading persistent entities as read-only中所述:

  

更改默认行为,以便NHibernate加载实体实例   可变类进入会话并自动生成它们   只读,致电:

Session.DefaultReadOnly = true;
  

要更改默认值,以便NHibernate加载的实体不会   只读,电话:

Session.DefaultReadOnly = false;

因此,在致电Session.Query...致电Session.DefaultReadonly = true之前,由于此设置会转到ISession,而不是发送给提供商。

答案 1 :(得分:2)

如果您需要只读会话,可以使用更好的方法:how to create a readonly session in nHiberate?

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

session.FlushMode = FlushMode.Never

在这种情况下,NHibernate不会调用任何侦听器,因为我知道