我是NHibernate的新手。我们正在使用Dapper进行检索并计划将NHibernate用于CRUD。
我试图通过一对多关系中的父列表对象删除子对象。
当我使用NHibernate会话检索对象并删除该项时,这是有效的。
var mercedes = Read("chevrolet"); //queries from nhibernate session
var model = mercedes.Models.Where(c => c.Id == 181).Single();
mercedes.Models.Remove(model);
当我手动创建对象并附加thecars模型时,它无法将其删除。
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);
我想我在做一些奇怪的事情。但我能够使用第二种方法添加/更新模型,所以为什么我不能删除它。任何见解请。
答案 0 :(得分:1)
当您创建新的域对象时,它不会附加到NHibernate会话(例如,除非您正在创建新对象并调用Save)。因此,从模型集合中删除实际上并没有做任何事情。
您的第二个示例似乎不是一个特别好的做法,但您可以 recreate an object and attach it to your NHibernate session使用Session.Lock
(Merge
或Update
是公平的正常,取决于您的首选行为)。