1
我不确定如何映射集合以进行更新。 我有2个表:NHibernate集合映射:它是删除并插入而不是更新
- 对象 - 有3个整数
- ObjectAliases复合PK - 有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>
我可以创建和删除别名列表对象没有问题, Nhibernate会插入并删除罚款。但我如何重命名别名?我有名字FK到Alias,当我重命名一个别名时,我希望NHibernate执行sql UPDATE,因此UPDATE CASCADE在所有FK上执行,引用新名称。
如果我做的:
object.Aliases[0] = "test";
NHibernate的会尽量做一个INSERT而不是UPDATE ..我怎么可以把它做的更新?
谢谢大家。
你是完全正确的......我发现这句话:“NHibernate不能单独创建,删除或更新行,因为没有可用于识别单个行的密钥。” ..所以我会尝试索引收集和报告。 – 2011-04-01 22:02:43
我发现你不能这样做(用我的表格结构)。如果您尝试使用索引列表,您需要一个索引列,它不能与元素列相同。 最后,我通过将inverse =“true”放在列表中并自己管理更新别名来解决它。 – 2011-04-05 07:30:44