【问题标题】:Nhibernate: how to postpone update or delete?Nhibernate:如何推迟更新或删除?
【发布时间】:2013-01-31 16:24:37
【问题描述】:

我需要帮助: 我是 Nhibernate 的初学者。 我创建了一个 wpf 应用程序,它加载与可观察集合绑定的数据网格。 这个集合加载了存储库模式和 Nhibernate 查询数据库。 我想用 UI 修改这个集合(编辑、添加、删除)。

当我点击到我的保存按钮时,我想将我的更改保存到数据库表。 我阅读了 nhibernate 文档,我了解到有 2 级缓存,我的想法是修改一级缓存中的对象,当我确定我的更改时我想坚持。 有一些最佳做法吗?

如何标记删除或更新对象并在点击“保存更改”后删除或更新它?

【问题讨论】:

标签: c# wpf database hibernate nhibernate


【解决方案1】:

这应该是一个有趣的阅读:Building a Desktop To-Do Application with NHibernate

基本上,您应该使用ISession 对象的方法,并在事务内部进行操作,即ISession.BeginTransaction()

这取决于您如何获得实体。如果它们是根实体,例如员工然后当您从网格中删除一个实体时,您应该跟踪这些已删除的实体并在所有这些实体上调用删除。您还应该跟踪添加的实体。

那么基本上你剩下的就是更新的实体。 NH 跟踪状态并知道实体是否被修改。

我们有ISession.Save/Update/Delete.

当您为每个修改的实体完成此操作后,对事务调用 Commit。这会将更改保存到数据库中。

如果您的实体不是根,但例如是员工地址,那么对员工调用 save 就足够了 - 如果您的映射正确。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-17
    • 1970-01-01
    • 2019-03-22
    • 1970-01-01
    相关资源
    最近更新 更多