我需要帮助: 我是Nhibernate的初学者。 我创建了一个wpf应用程序,用于加载与可观察集合绑定的数据网格。 此集合加载了存储库模式和Nhibernate查询数据库。 我想用UI修改这个集合(编辑,添加,删除)。
当我点击到我的保存按钮时,我想将更改保留到db表。 我读了nhibernate文档,我知道有2级缓存,我的想法是修改第一级缓存中的对象,当我确定我的更改时,我想要坚持。 这样做有一些最佳实践吗?
如何标记删除或更新对象,并在&#34之后删除或更新对象;保存更改"点击?
答案 0 :(得分:1)
这应该是一个有趣的读物:Building a Desktop To-Do Application with NHibernate
基本上,您应该使用ISession
对象的方法,并在事务中执行操作,即ISession.BeginTransaction()
这取决于你获得实体的方式。如果它们是根实体,例如员工然后,当您从网格中删除实体时,您应该跟踪这些已删除的实体并在所有这些实体上调用删除。您还应该跟踪添加的实体。
那么基本上你剩下的就是更新后的实体。 NH跟踪状态并知道实体是否被修改。
我们有ISession.Save/Update/Delete.
为每个修改后的实体执行此操作后,请在事务上调用Commit。这将保存对数据库的更改。
如果您的实体不是根,而是如果您的映射是正确的,那么就是员工地址,那么就足以为员工打电话保存。