0

これらのクラスがあり、それらの間に多対多の関係があるとします。

public class ClassA
{
    public virtual int IdClassA { set; get; }
    public virtual IList<ClassB> BElements { set; get; }

    ...
}

public class ClassB
{
    public virtual int IdClassB { set; get; }
    public virtual IList<ClassA> AElements { set; get; }
    ...
}

NHibernate を使用して、データベースから ClassA オブジェクトを取得せずに、ClassB オブジェクトを挿入して ClassA オブジェクトに関連付けることは可能ですか? (おそらく、どの ClassA オブジェクトが新しい ClassB オブジェクトに関連しているかを伝えるクエリを指定するだけでしょうか?)

4

2 に答える 2

1

もちろん:

var a1 = session.Load<ClassA>(idA1);
var a2 = session.Load<ClassA>(idA2);
var b = new ClassB { AElements = new List<ClassA> { a1, a2 } };
session.Save(b);
transaction.Commit();

idA1およびは、関連するインスタンスidA2の ID です。データベースからオブジェクトをロードせずにプロキシを作成します (または、既にロードされているインスタンスがある場合はそれを返します)ClassAsession.Load

于 2013-05-29T11:46:19.420 に答える
0

2 つの選択肢があります。1つは挿入用の他のクラスオブジェクトを使用し、もう1つはオブジェクトを使用せずに選択するための2つのクラスの2つのマッピングがあります。クラス全体..私の意見では、ロードするものは何もありません(IDのみ)。それは役に立ちますか?

于 2013-05-29T00:28:30.890 に答える