2010-10-11 103 views
1

我有兩個類。 「產品」和「產品」可以有多個「屬性」類對象刪除Nhibernate問題

當有人編輯「產品」時,我想刪除與該產品相關的所有屬性並重新創建新的(第二部分工作正常),但我遇到了一個錯誤,它阻止我刪除屬性。

public ProductMapping() 
    { 
     Id(x => x.Id); 
     Map(x => x.ProductName); 
     Map(x => x.Description); 
     Map(x => x.Quantity); 
     Map(x => x.Price); 
     Map(x => x.Live); 
     HasMany(x => x.Images) 
      .KeyColumn("ProductId") 
      .Cascade.All() 
      .Inverse(); 
     HasMany(x => x.Attribute) 
      .KeyColumn("ProductId") 
      .Cascade.All(); 

    } 

我的屬性映射

public AttributeMapping() 
    { 
     Id(x => x.Id); 
     Map(x => x.Name); 
     Map(x => x.Value); 
     Map(x => x.Live); 

     References(x => x.Product) 
      .ForeignKey() 
      .Column("ProductId") 
      .Cascade.SaveUpdate(); 

    } 

我不知道如果我的級聯是正確的,但我想他們!

我試圖讓所有的屬性和做

var AttRepository = GetRepository<ForSale.Domain.Attribute>(); 
foreach (var a in dbProduct.Attribute) 
      { 
       AttRepository.Delete(a); 
      } 

逐個拆除各一個,也試着做了:

dbProduct.Attributes.Clear(); 

同樣,也不會成功! 我得到的錯誤是

「無法將NULL值插入列‘產品編號’,表‘{} LocalFilePath /PRODUCTS.MDF.dbo.Attribute’;列不允許空值更新失敗 的語句被終止「。

數據庫產品

回答

2

您應該映射Product.AttributeInverse

+0

認爲我可能已經嘗試過,但將在家時再次測試! – Steve 2010-10-12 08:09:21

+0

這工作....我一定沒有混合這與Cascade.All()或東西! – Steve 2010-10-12 22:02:39