0

私はNHibernateが初めてです。検索には Dapper を使用しており、CRUD には NHibernate を使用する予定です。

1 対多の関係で、親リスト オブジェクトを介して子オブジェクトを削除しようとしています。

これは、NHibernate セッションを使用してオブジェクトを取得し、アイテムを削除すると機能します。

var mercedes = Read("chevrolet"); //queries from nhibernate session
var model = mercedes.Models.Where(c => c.Id == 181).Single(); 
mercedes.Models.Remove(model);

オブジェクトを手動で作成して車のモデルを添付すると、削除できません。

var mercedes = new Make() { Id = 77, Name = "chevrolet" };//manually created the object
mercedes.Models = GetAllModels(77);//I have it in-memory            
var model = mercedes.Models.Where(c => c.Id == 173).Single();
mercedes.Models.Remove(model);

私は何か変なことをしていると思います。しかし、2 番目のアプローチを使用してモデルを追加/更新できるのに、削除できないのはなぜですか。洞察をお願いします。

4

1 に答える 1

1

新しいドメイン オブジェクトを作成しても、それは NHibernate セッションに関連付けられません (たとえば、新しいオブジェクトを作成して Save を呼び出さない限り)。そのため、モデル コレクションから削除しても、実際には何も起こりません。

2番目の例は特に良い方法ではないようですが、オブジェクトを再作成してNHibernateセッションにアタッチすることができ ます(または、好みの動作に応じてかなり正常です)。Session.LockMergeUpdate

于 2012-08-26T04:45:21.577 に答える