我不确定如何映射集合以进行更新。 我有2张桌子:
对象可以有多个别名,但别名对每个对象都是唯一的。
所以我需要在对象中列出别名,所以我做了:
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>
我可以在没有问题的情况下从别名列表创建和删除对象,Nhibernate将插入和删除罚款。但是如何重命名别名呢?我有名字的FK到别名,当我重命名别名时,我希望NHibernate做sql UPDATE,所以UPDATE CASCADE在所有FK上执行,引用新名称。
如果我这样做:
object.Aliases[0] = "test";
Nhibernate将尝试执行INSERT而不是UPDATE ..如何让它进行更新?
谢谢大家。
答案 0 :(得分:1)
行李是无序和无索引的集合(来自http://www.nhforge.org/doc/nh/en/index.html#collections-mapping)。所以我猜这是因为nhibernates删除了一个重新创建其内容的事实。