我的应用程序中有一个User对象/映射。每个用户都有联系信息列表(电话,电子邮件等)
用户的映射包含:
<bag name="ContactInfo" table="contact_info" lazy="true" cascade="all">
<key column="contact_id"/>
<one-to-many class="...ContactInfo, ..."/>
</bag>
这工作正常,但我得到n + 1选择问题所以我需要优化它一点点。但由于某种原因,当我将其更改为连接并执行某些数据库操作时,NH开始更新数据库中的所有contact_info对象。当我说数据库操作时,我不是指changinf联系人。我的意思是什么。
任何人都知道为什么? THX
编辑:刚刚意识到它也是为lazy =“true”做的,但第二次是在加载对象之后。为什么遗留的问题
答案 0 :(得分:1)
我想知道你的级联是否导致了这个问题。你的整个图表上有cascade = all吗?如果是这样,您可能需要重新评估您的生命周期策略。
这是来自NHibernate 1.2参考文献的第9.9节(强调添加)
映射关联(多对一, 或者集合)与cascade =“all” 将该关联标记为父/ 孩子式的关系在哪里 保存/更新/删除父级 导致保存/更新/删除 子女。 另外,还有一点 引用持久性的孩子 父将导致保存/更新 孩子。
答案 1 :(得分:0)
事实证明,ContactInfo中的枚举字段是个问题。我不介意,如果特定的字段是一个字符串,所以改变它解决了这个问题。