0

我是 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);

当我手动创建对象并附加汽车模型时,无法将其删除。

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);

我想我在做一些奇怪的事情。但是我可以使用第二种方法添加/更新模型,所以我为什么不能删除它。请有任何见解。

4

1 回答 1

1

当您创建一个新的域对象时,它不会附加到 NHibernate 会话(例如,除非您正在创建一个新对象并调用 Save)。因此,从模型集合中删除实际上并没有做任何事情。

您的第二个示例似乎不是一个特别好的做法,但您可以 重新创建一个对象并将其附加到您的 NHibernate 会话 使用Session.LockMerge或者Update根据您的首选行为相当正常)。

于 2012-08-26T04:45:21.577 回答