休眠:如何推迟更新或删除

本文关键字:更新 删除 推迟 何推迟 休眠 | 更新日期: 2023-09-27 17:56:47

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

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

如何标记为删除或更新

对象,并在单击"保存更改"后删除或更新它?

休眠:如何推迟更新或删除

这应该是一个有趣的读物:使用 NHibernate 构建桌面待办事项应用程序

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

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

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

我们有ISession.Save/Update/Delete.

为每个修改的实体执行此操作后,在事务上调用 Commit 。这将保存对数据库所做的更改。

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