【发布时间】:2011-02-02 22:00:09
【问题描述】:
我的问题类似于这个问题:(link)
但我有一对多关联:
<set name="Fields" cascade="all-delete-orphan" lazy="false" inverse="true">
<key column="[TEMPLATE_ID]"></key>
<one-to-many class="MyNamespace.Field, MyLibrary"/>
</set>
(我也试过用) 此映射适用于 模板 对象。这个和 Field 对象的 ID 生成器设置为 identity。
所以当我为 Template 对象调用 session.Update 时,它工作正常,嗯,几乎: 如果 Field 对象有 Id 号,则调用 UPDATE sql 请求,如果 Id 为 0,则执行 INSERT。但是如果我从集合中删除一个 Field 对象,它对数据库没有影响。我发现如果我也为此 Field 对象调用 session.Delete,一切都会好起来的,但由于客户端-服务器架构,我不知道要删除什么。
所以我决定从数据库中删除所有集合元素并使用新集合调用 session.Update。我遇到了一个问题:nhibernate 对具有非零 Id 的 Field 对象执行 UPDATE 操作,但它们已从 DB 中删除!
也许我应该使用其他一些 ID 生成器或 smth.. 让 nhibernate 为集合执行“全部删除”/“全部插入”例程的最佳方法是什么?
【问题讨论】:
标签: nhibernate mapping collections