2011-10-18 6 views
0

私のプロジェクトにはMVC、NHibernate、Sharpアーキテクチャが使用されています。
SaveOrUpdateを使用してオブジェクト(エンティティ)を保存するときは、更新される子エンティティもあります。しかし、子エンティティを更新する代わりに、すべての子エンティティに対してDELETE-INSERTを実行します。Nhibernate.ISession SaveOrUpdateの内部に正確に何が入っていますか

助けてください。

+0

どのように子エンティティを変更していますか? –

+0

このような動作は、アイテムをコレクションに変更または追加するのではなく、エンティティのコレクションプロパティを変更するときに発生します。 NHibernateは、プロパティ自体に発生した変更を見て、削除/挿入を行います。子アイテムを読み込んでエンティティに割り当てる場合は行いません。熱心にそれらをロードするか、怠け者にロードしてください。 – Phill

+0

質問を詳しく説明してください。限られた説明で他人が手助けすることは非常に難しいでしょう – frictionlesspulley

答えて

0

これは、既存の子オブジェクトを更新していないために発生します。既存の子オブジェクトのコレクション全体を置き換えます。これにより、Nhibernateは新しいコレクションを保存しなければならないと考えるようになります。

+0

はい。これはまさに起こっていることです。子エンティティデータベースにデータがない場合は、データベースに挿入するだけです。しかし、すでに子エンティティに利用可能なデータがある場合は、前の行を削除してから、現在のデータをもう一度挿入します。 –

+0

子エンティティの新しいインスタンスを追加するときに、前の子エンティティを削除して再度挿入するのではなく、新しい行を追加するだけで、これを変更する方法に関する提案があります。 –

+0

あなたがコレクションを割り当てているからです。コレクションを割り当てないで、アイテムを既存のコレクションに追加します。 – Phill

関連する問題