Nhibernate:如何推迟更新或删除?

时间:2013-01-31 16:24:38

标签: c# wpf database hibernate nhibernate

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

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

如何标记删除或更新对象,并在&#34之后删除或更新对象;保存更改"点击?

1 个答案:

答案 0 :(得分:1)

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

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

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

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

我们有ISession.Save/Update/Delete.

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

如果您的实体不是根,而是如果您的映射是正确的,那么就是员工地址,那么就足以为员工打电话保存。