は、私は空のオブジェクトの代わりに、ヌルをしたいので、私は「空のオブジェクト」と子を設定しています。この空の子の参照<一緒に保存>
public class MyObject
{
public virtual long MyId { get; set; }
public virtual MyChild Child { get; set; }
public MyObject()
{
Child = new MyChild();
}
}
public class MyChild
{
public virtual long MyId { get; set; }
}
のようなオブジェクトを宣言しています私のモデルでは私はこの
CREATE TABLE MyObjects
(
MyObjectId bigint IDENTITY(1,1) NOT NULL,
ChildId bigint NULL
)
のようなテーブルを持っている。そして、私は私のマッピングで
References<MyChild>(x => x.Child, "ChildId");
を持っている私のデータベースで
問題にセットところです。私は新しいMyObject
を作成しようとすると、 オブジェクトが未保存の一時的インスタンスを参照するエラーが発生します。だから、私はこれをしなかった:
var newObject = new MyObject()
{
Child = null
};
repository.Save(newObject);
これは、保存に努めていますが、今の私のオブジェクトは、私が望む動作ではありませんnullの子供を持っています。私が使用できるハックは、新しいMyObject
を作成した後で子供を空にリセットすることですが、もっと良い方法があるかどうかを確認したいと思います。
子は私のオブジェクトにnullではないことが必要であるが、子オブジェクトのIDが0
EDIT
はちょうど全体のヌル/リセット戦略をテストしていた場合はnullとして保存され、それは動作しません。私のモデル内のオブジェクトへのその後のnhibernate要求は、一時オブジェクトエラーを引き起こします。
私はあなたの提案のバージョンを行いました。プライベートローカル変数を使用し、ローカルプロパティを新しいインスタンスに設定した後、プロパティがnullの場合、プロパティは子の新しいインスタンスを返します。親オブジェクトに「空の」子を保存させてから、ユーザーが適切なデータを入力すると更新します。 – Josh