1

クラスがあるとしましょう:

public class Entity
{
  ...
  public IEnumerable<Cousin> Cousins { get; set; }
}

...そして私はそれをマッピングしました...

public class EntityMap : ClassMap<Entity>
{
  public EntityMap()
  {
    ...
    HasMany(x => x.Cousins).Cascade.AllDeleteOrphan();
  }
}

Cousin には独自のリポジトリがありません (少なくとも現時点では)。エンティティとそのリポジトリを通じてすべての節約を行うつもりはありません。

私はすでにいとこのリストを保存しているので、Entity は Cousins にアイテムを持っています。

次回エンティティを保存するときは、新しいカズンが含まれている可能性があります。したがって、私は既存のカズンを消し去り、カズンの新しいコレクションのための場所を作りたいと思っています。

これを実行しようとしていますが、次のエラー メッセージが表示されます。

A collection with cascade="all-delete-orphan" was no longer referenced by the owning entity instance: Cousins

Entityを保存するたびにNHibernateにCousinsを上書きさせるにはどうすればよいですか? また、これが悪い習慣である場合は、そう言ってください。

4

1 に答える 1

3

コレクションの参照を変更しているようです。つまり、次のようなものを作成していますx.Cousings = new List<Cousin>()

あなたがするべきでありx.Clear()、次に各要素をx.Add(someCousin)

于 2012-04-13T22:34:05.977 に答える