代码之家  ›  专栏  ›  技术社区  ›  chum of chance

不删除子对象

  •  3
  • chum of chance  · 技术社区  · 14 年前

    我无法让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 回复  |  直到 14 年前
        1
  •  1
  •   Michael Goldshteyn    14 年前

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