1

我不确定如何映射要更新的集合。我有 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?

谢谢你们。

4

1 回答 1

1

袋子是无序和未索引的集合(来自http://www.nhforge.org/doc/nh/en/index.html#collections-mapping)。所以我猜它来自这个事实,即 nhibernates 删除并重新创建其内容。

于 2011-04-01T12:01:31.467 回答