1

NHibernate を使用して DB にマップされた 2 つのエンティティがあります。

class Entity1
{
    public int Id { get; set; }
    public Entity2[] ReferencedEntities { get; set; }
}

class Entity2
{
    public int Id { get; set; }
}

Entity1 については、Entity2 との多対多の関係も指定します。

HasManyToMany(x => x.ReferencedEntities);

私が理解しているように、内部的に NHibernate は多対多の関係を表し、次のような関係エンティティを作成します。

class Reference
{
    public Entity1 Entity1 { get; set; }
    public Entity2 Entity2 { get; set; }
}

次のように NHibernate ステートレス セッションを使用して、これらのエンティティを DB に追加しています。

using (var session = sessionFactory.OpenStatelessSession())
{
    session.Insert(entity1);
    foreach (var entity2 in entity1.ReferencedEntities)
    {
        session.Insert(entity2);
    }
}

しかし、それらの間の関係も追加したいと思います。このために、関係エンティティも保存する必要があります。ステートレス セッションを使用して多対多の関係を追加するにはどうすればよいですか? 関連エンティティを暗黙的に指定する必要がありますか、それとも別の方法がありますか?

4

1 に答える 1

0

ステートレス セッションは操作をカスケードしないため、他のテーブルで実行された場合、変更や配列要素へのリンクは保存されません。

UnsavedValue()不必要な選択は、多くの場合、またはのような欠落/間違ったコードの兆候ですEquals()``GetHashCode()

于 2011-10-04T10:41:24.367 に答える