我正在用Castle ActiveRecord构建一个桌面应用程序,并希望能够完成每个窗口窗体1个nHibernate会话的等效功能。关于如何使用Active Record执行此操作的任何想法?如何使用ActiveRecord为桌面应用程序中的不同窗口创建不同的会话?
具体来说,我有一个主窗口,允许您浏览数据(只读),然后您可以打开单独的窗体来编辑数据。
每次打开表格时,我想要创建一个新的会话,获取要编辑的数据的副本(因此可以更改而不会影响主窗口中的数据)。然后我希望能够通过数据绑定操作该副本。最后,提交更改(如果用户选择保存)或将其回滚(如果用户选择取消)。
任何想法?
感谢您的回答。如果我不使用SessionScope,它实际上是否会创建要编辑的数据项的单独实例?我问的原因是因为我遇到的另一个问题是如果他们都使用相同的实例(即使我不保存())INotifyPropertyChanged消息将去主窗口 - 我不想。因此,如果可能的话,使用独立副本听起来最好吗? – 2010-01-10 22:19:02
谢谢!我即将前往本周的CodeMash会议,但当我回来时,我会毫不犹豫地尝试。快速问题 - 这将允许延迟加载(例如,通过数据绑定 - 所以在新的ConversationalScope(会话)之外发生的调用)? – 2010-01-12 14:31:30
是的,我甚至在那个测试的评论中指出了这一点。我今天强化了它,我认为它将在本周末完成。 – MZywitza 2010-01-12 19:48:27