首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >NHibernate:存储图形用户界面更改的最佳时机

NHibernate:存储图形用户界面更改的最佳时机
EN

Stack Overflow用户
提问于 2010-01-17 01:44:54
回答 2查看 218关注 0票数 1

我对NHibernate和Session有点困惑。据我所知,我应该“尽快”使用会话,这意味着两个不同的交互会有自己的会话。

在UI交互的情况下我该怎么做,我想存储在数据库中。我有一个简单的例子,其中一个树形视图列出了一些项目,并绑定到我的业务对象的IsExpanded属性(我知道这是不好的做法,但对我的方法来说是可以的)……

现在的问题是,我什么时候保存更改。目前我正在关闭窗口时手动冲洗,这似乎不太正确。我可以在每次属性改变时刷新,但我认为这完全是过度杀伤力。

对于这类问题,有没有什么模式或提示?就像是“在合适的时候整理和存储GUI信息”……

为了更好地理解,下面是一些代码:

代码语言:javascript
运行
复制
    private static PjmDbController _d;
    private static IList<Topic> _allItems;

    private static void TopicStoresChildStatesExpandedOrNot()
    {
        var w = new Window();
        _d = new PjmDbController();
        _allItems = _d.GetAllRoots();
        w.Content = new PjmTreeView<Topic>() {ItemsSource = _allItems};
        w.Show();
        w.Closed += new EventHandler(w_Closed);
    }

    static void w_Closed(object sender, EventArgs e)
    {
        _d.Session.Flush();
    }

谢谢你的建议,克里斯

PS:静态仅用于测试:-)

EN

Stack Overflow用户

回答已采纳

发布于 2010-01-17 01:57:05

它完全取决于应用程序中工作单元的范围。使用NHibernate的最佳实践是将会话视为一个工作单元。如果打开窗体、操作树和关闭窗体代表单个工作单元,那么在窗体关闭时刷新会话是有意义的。但是,我会在事务内持久化更改,而不是刷新会话。关于管理会话,This answer是一个很好的建议。

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2078314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档