1

NHでオブジェクトグラフを永続化するのに問題があります。

私は(のような)これを持っています:

/*Tables*/
TABLE Parent
  ParentID PK 
  LastEventID NULL

TABLE Event
  EventID PK
  ParentID FK NOT NULL

//Model Classes

public class Parent
{
    public List<Event> Events;  //Inverse

    //Denormalized bit
    public Event LastEvent;  //not inverse

}

public class Event
{
    public Parent Parent;  //Makes the association up there Inverse
}

新しい親を作成し、新しいイベントを作成し、新しいイベントをParent.Eventsに追加し、Parent.LastEventを新しいイベントに設定しています。

NHに親を保存するように指示すると、最初に保存する必要がある一時オブジェクトに関するエラーが発生します。親とイベントの関係が明確でないためだと思います。

SQLが実行する必要がある方法は、nullのLastEventを使用してParentを挿入し、次にEventを挿入してから、Parent.LastEventを更新することです。

では、どうすればNHにこれを実行させることができますか?

4

1 に答える 1

0

マッピング スキーマが表示されない場合は、推測する必要があります。

更新をカスケードしていますか? 参照から:

関連オブジェクトのグラフ内のすべてのオブジェクトを保存または更新するには、次のいずれかを行う必要があります。

  • 個々のオブジェクトごとに Save()、SaveOrUpdate() または Update() または
  • cascade="all" または cascade="save-update" を使用して関連オブジェクトをマップします。

これをまだ持っていないと仮定すると、 inverse="true" とマークされた側に cascade="all" または cascade="save-update" を追加すると問題が解決しますか?

于 2009-02-19T21:27:53.693 に答える