NHibernate不删除子对象

时间:2010-10-18 00:01:13

标签: nhibernate fluent-nhibernate nhibernate-mapping

我无法让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对一切都很好。

1 个答案:

答案 0 :(得分:1)

尝试添加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();
}