Nhibernateは、レコードを挿入または更新するかどうかをどのように決定しますか?
-
01-10-2019 - |
質問
使用するとき Session.SaveOrUpdate(myEntity);
Nhibernateは、新しいレコードを挿入するか、既存のレコードを更新するかをどのように決定しますか?
S#ARPプロジェクトで1つのオブジェクトを保存しながら問題があります。ストレージから取得され、セッション状態にいくつかのWebリクエストのために保存され、1つのプロパティが変更された状態でデータベースに保存されます(S#arpではありません [DomainSignature]
).
実行時に、データベースを使用してデータベースから直接取得したばかりのバージョンで持続しようとしているオブジェクトを比較しました Equals()
メソッドとそれがtrueを返します。ただし、オブジェクトはまだデータベースに新しい行を作成することになります。
アプリケーションの他の場所では、これは正常に機能していますが、Nhibがこれをどのように解決しているかについてのポインターを望んでいます。
解決
基本的に SaveOrUpdate()
識別子を探しています。識別子が存在する場合、データベースのレコードを更新します。識別子が存在しない場合、新しいレコードが作成されます。
しかし、セッションで何かファンキーなことが起こっているように聞こえます。試してみたいと思うかもしれません SaveOrUpdateCopy()
これがあなたの問題を解決するかどうかを確認します。
所属していません StackOverflow