【问题标题】:How to create an NHibernate read-only session with Fluent NHibernate that doesn't accumulate updates?如何使用 Fluent NHibernate 创建一个不累积更新的 NHibernate 只读会话?
【发布时间】:2012-10-01 04:46:35
【问题描述】:

应该使用哪些配置选项来构建不会累积更新并始终保持只读状态的会话?

似乎将第一级或第二级缓存替换为只读版本可能是答案,如何使用流畅的配置来实现?

【问题讨论】:

    标签: nhibernate configuration readonly


    【解决方案1】:

    how to create a readonly session in nHiberate?

    或者,您可以将默认的保存/更新/删除事件侦听器替换为您自己的实现,而无需执行任何操作

    为此,在您的 NHibernate 配置中,您需要执行以下操作:

    Fluently.Configure()
        // your config goes here
        .ExposeConfiguration(
            x => x.EventListeners.SaveOrUpdateEventListeners = 
               new ISaveOrUpdateEventListener[ ]{new NoOpEventListener() } ;
        // etc for other types
    

    【讨论】:

    • 嗨,谢谢。我确实看到了您提到的帖子,但是对我来说,累积所有更新并且从不刷新它们似乎违反直觉。这似乎是对资源的严重浪费。我认为这种方法要好得多。我在那里添加了一个链接。
    • 不,设置 session.FlushMode = FlushMode.Never 后不会累积更新。我通过覆盖您的问题中的 SaveOrUpdateEventListeners 来检查它,并且没有使用 FlushMode.Never 调用侦听器。在您的解决方案中,每次更改都会调用 NoOpEventListener
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-05
    • 1970-01-01
    • 2011-02-21
    相关资源
    最近更新 更多