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(); 
} 
+0

就是这样,谢谢! – 2010-10-18 00:18:29

+0

你能解释一下为什么这可行吗? – UpTheCreek 2010-10-18 13:27:41

+0

看来NHibernate需要明确告诉提交更改以删除孤儿。 – 2010-10-19 16:04:59