【发布时间】:2010-06-29 15:36:21
【问题描述】:
这可能是一个愚蠢的问题,但我仍在努力解决 nHibernate。
据我使用该软件可以看出,nHibernate 需要您做一些额外的处理才能正确保存更改。
假设我有一个对象 X,它可以包含许多对象 Y。我将创建一个具有 2 个 Y 的 X,每个 Y 都有自己的属性。然后我决定要更新 X。我要添加一个新的 Y,并更改一个现有的 Y。
所以我使用它的 ID 加载我的对象 X。然后我遍历我正在添加的 Y,将它们添加到 X 并使用更新语句保存批次。
如果您这样做,您会发现“旧”Y 在数据库中成为孤立对象。当我想到它时,这正是我所期望的——毕竟我还没有摆脱那些对象,我只是创建了一些新对象。
所以有两种方法来看待这个问题。要么我应该删除所有 Y 数据然后重新创建它,要么我应该能够向 nHibernate 标记我正在做的是一个更改,它应该更新现有对象而不是创建新对象.麻烦的是,我不确定哪种方法是“正确的”或如何最好地做到这一点 - 前者似乎效率极低,而后者意味着设置大量“更改”的标志和非常繁琐的代码。
所以我很确定一定有一个更简单的解决方案,我在愚蠢中错过了。有人可以指出最好的方法以及如何在 nHibernate 中最好地处理它......如果这个问题有任何意义的话:)
干杯, 马特
【问题讨论】:
标签: nhibernate