【发布时间】:2010-11-12 12:29:05
【问题描述】:
我使用关联表和 cascade="save-update" 在两个实体之间定义了多对多关系。
Entity1 包含 Entity2 的列表,相反,Entity2 包含 Entity1 的列表。从这个工作流输出的 SQL 似乎没问题...
- 创建 Entity1 和 Entity2 对象
- 将 Entity2 添加到 Entity1 的列表中
- 调用 session.Save 到 Entity1
-> 对两个实体都运行插入语句,然后将一条记录插入到将它们链接在一起的关联表中。
但是,如果我首先在 Entity2 上调用 session.Save,将其添加到列表中,然后在 Entity1 上调用 session.Save,则会运行额外的 UPDATE 语句,将 Entity2 的所有值设置为与开头插入的内容相同。
虽然没有引起任何问题,但它是一个额外的查询降低性能。我玩过 inverse 属性,但这并不能消除额外的更新语句。目前双方都有 inverse="false" 因为我希望无论保存哪个实体都更新关联表。
有什么想法吗?
【问题讨论】:
标签: c# nhibernate