0

我正在使用 Castle ActiveRecord 构建一个桌面应用程序,并且希望能够为每个窗口窗体执行相当于 1 个 nHibernate 会话。关于如何使用 Active Record 执行此操作的任何想法?

具体来说,我有一个主窗口,允许您浏览数据(只读),然后您可以打开单独的表单来编辑数据。

每次打开表单时,我都想创建一个新会话,获取要编辑的数据副本(因此可以在不影响主窗口中的数据的情况下对其进行更改)。然后我希望能够通过数据绑定来操作该副本。最后,要么提交更改(如果用户选择保存)或回滚更改(如果用户选择取消)。

有任何想法吗?

4

1 回答 1

1

如果您不需要延迟加载,请不要使用 SessionScope。您可以简单地进行数据绑定并在保存时调用 entity.Save()。由于您的对象在没有 SessionScope 的情况下被分离,因此您无需在取消表单时执行任何操作。

如果您需要延迟加载,那么这将不适用于普通的 ActiveRecord。计划使用允许使用 CpBT(在您的情况下为每个表单实例进行对话)的 ConversationalScope,但尚不可用。

一种可能性是尝试 Rhino Commons,它具有 ActiveRecord 的工作单元实现。这可以满足您对当前 AR 的需求,但我大约有 2 年没有使用它了。

编辑:现在可以从主干获得基本的 CpBT 实现。签出并使用 nant 构建。请参阅此链接了解如何使用它: https ://svn.castleproject.org/svn/castle/ActiveRecord/trunk/src/Castle.ActiveRecord.Tests/Conversation/ConversationScenarioTest.cs 它还没有准备好生产,但我'我喜欢它的反馈。

于 2010-01-10T21:54:53.240 回答