我不确定如何映射要更新的集合。我有 2 张桌子:
- 对象 - 具有 3 个整数的复合 PK
- ObjectAliases - 具有对象的 FK 和名称的 nvarchar PK,显然名称是唯一的
对象可以有多个别名,但每个对象的别名名称都是唯一的。
所以我需要在我的对象中列出别名,所以我做了:
public virtual IList<string> Aliases { get; set; }
我的映射是:
<bag name="Aliases" table="Aliases" cascade="all-delete-orphan" lazy="true">
<key>
<column name="OtpadId_Djelatnost" sql-type="nvarchar"/>
<column name="OtpadId_Proces" sql-type="nvarchar"/>
<column name="OtpadId_Vrsta" sql-type="nvarchar"/>
</key>
<element column="Ime" type="String"/>
</bag>
我可以毫无问题地从 Aliases 列表中创建和删除对象,Nhibernate 会很好地插入和删除。但是如何重命名别名?我按名称将 FK 命名为 Alias,当我重命名别名时,我希望 NHibernate 执行 sql UPDATE,因此 UPDATE CASCADE 在所有 FK 上执行,并引用新名称。
如果我做:
object.Aliases[0] = "test";
Nhibernate 将尝试执行 INSERT 而不是 UPDATE .. 我怎样才能让它执行 UPDATE?
谢谢你们。