如何在nHiberate中创建只读会话?

dot*_*der 16 nhibernate

是否可以在nHibernate中创建只读连接?

只读:nHibernate不会隐式或显式地清除对底层数据库的任何更改.

关闭nhibernate连接时,它会自动清除对持久对象的更改.

将刷新模式设置为永远不是一种方式 - 但是可以反转(即某些代码可以重置刷新模式).

Stu*_*lds 14

我想你已经找到了解决方案,将刷新模式设置为never.是的,它是可更改的,但即使它不是,代码也可以简单地创建另一个具有不同刷新模式的会话.

我认为合适的解决方案是通过使用只有SELECT权限的数据库连接(或任何适合您情况的连接)来建议只读session.FlushMode = FlushMode.Never执行它.维护单独的ISessionFactory工厂可能会有所帮助ReadOnlySessionFactory.Create().


Jaf*_*fin 6

看一下NHibernate 3.1 GA中提供的Read Only实体 https://nhibernate.jira.com/browse/NH-908