【问题标题】:NHibernate StateLessSession vs DefaultReadOnlyNHibernate StateLessSession 与 DefaultReadOnly
【发布时间】:2016-03-08 10:05:40
【问题描述】:

在NHibernate中,有什么区别:

using(var session = _sessionFactory.OpenStatelessSession()) {
    //Do Work
}

using(var session = _sessionFactory.OpenSession()) {
    session.DefaultReadOnly = true;
    //Do Work
    session.DefaultReadOnly = false;
}

我只希望某些上下文中的某些实体是无状态的,而另一些则不是。我可以使用两个会话(一个是有状态的,一个是无状态的),或者将我想成为无状态的查询包装到 DefaultReadOnly-calls 中。

【问题讨论】:

    标签: nhibernate


    【解决方案1】:

    DefaultReadOnly 设置为true 仅意味着NHibernate 不会跟踪实体属性并且不会更新数据库上的实体(至少sometimes)。它仍会将实体保留在其会话缓存中。无状态会话首先不会跟踪其实体,从而节省了一些内存。

    如果您只关心只读,您可能会使用单个会话和DefaultReadOnly = true。但是,如果您希望 NHibernate 在加载实体时不使用其会话缓存(例如,从数据库中获取当前数据,而不是 5 分钟前会话缓存中的数据),您最好使用无状态会议。

    【讨论】:

      猜你喜欢
      • 2011-05-15
      • 2011-12-04
      • 2011-01-20
      • 1970-01-01
      • 2011-11-07
      • 1970-01-01
      • 2013-03-05
      • 2012-11-23
      • 1970-01-01
      相关资源
      最近更新 更多