【问题标题】:WPF, Nhibernate v2 Session PersistenceWPF,Nhibernate v2 会话持久性
【发布时间】:2011-06-29 10:49:30
【问题描述】:

我有一个 WPF 应用程序,它通过 prism / MEF 将模块加载到我的应用程序中。每个模块都将引用我创建的一个程序集来容纳 NHibernate 功能(工作单元和存储库模式)。现在我开始了第一个模块,出现了以下问题:

  • 在 WPF/Windows 应用程序的生命周期内打开休眠会话是否很常见?
  • 最好在所有模块之间共享休眠会话还是让每个模块创建自己的会话?

我的理解是会话是轻量级的,因此打开和关闭会话不是问题......但是,如果我关闭会话,那么我会丢失更改跟踪......当我调用 Save 时,对象是与检索时相同,我不希望执行查询。

【问题讨论】:

    标签: wpf nhibernate persistence


    【解决方案1】:
    1. 在 wpf/windows 应用程序的生命周期内不要打开会话。如果这样做,您将遇到性能和内存问题。

    2. 这真的取决于这些模块如何交互。它们是独立的系统,还是需要协同工作才能工作。如果是前者,我会说他们不应该共享会话。如果是后者,我会使用某种可以传递当前会话的会话管理器。

    【讨论】:

    • 感谢您的意见。如果在应用程序的生命周期内保持会话打开是一个坏主意,那么在我的情况下在模块之间共享会话是没有意义的
    • 嗨,克里斯,我有一个类似的场景,我正在使用可观察的集合并从 XAML 视图绑定到它们。由于可以从应用程序的其他部分更新更高级别的实体,而不仅仅是 1 个视图,因此让会话在应用程序的生命周期内可用是有意义的。迄今为止,我对 1500 条具有相关实体的记录没有任何问题..
    猜你喜欢
    • 1970-01-01
    • 2016-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-10
    • 2016-04-24
    • 2016-10-09
    相关资源
    最近更新 更多