NHibernate的不删除子对象
问题描述:
我不能让NHibernate的删除这个子对象,它完成没有抛出任何异常,但不删除任何东西:NHibernate的不删除子对象
public void DeleteW9(int vendorId, int vendorW9Id)
{
var vendor = vendorRepository.Get(vendorId);
var W9 = vendor.W9.Where(x => x.Id == vendorW9Id).First();
vendor.W9.Remove(W9);
vendorRepository.SaveOrUpdate(vendor);
}
这里是我的供应商映射:
mapping.HasMany(x => x.W9)
.KeyColumn("VendorFk")
.Cascade.AllDeleteOrphan()
.AsBag();
我的VendorW9表格包含对VendorFk形式的供应商ID的参考。我没有限制设置,我是否需要设置主键关系? NHibernate的功能正常,但删除孤儿。
答
尝试增加vendorRepository.Commit():
public void DeleteW9(int vendorId, int vendorW9Id)
{
var vendor = vendorRepository.Get(vendorId);
var W9 = vendor.W9.Where(x => x.Id == vendorW9Id).First();
vendor.W9.Remove(W9);
vendorRepository.SaveOrUpdate(vendor);
vendorRepository.Commit();
}
就是这样,谢谢! – 2010-10-18 00:18:29
你能解释一下为什么这可行吗? – UpTheCreek 2010-10-18 13:27:41
看来NHibernate需要明确告诉提交更改以删除孤儿。 – 2010-10-19 16:04:59