0

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

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

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

4

1 回答 1

1

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

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

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

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

我们有ISession.Save/Update/Delete.

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

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

于 2013-01-31T16:49:34.673 回答