0

我有以下類別:功能NHibernate不會救

public class PhoneModel 
{ 
    public virtual ModelIdentifier SupportModels 
} 
public class ModelIdentifier 
{ 
    public virtual string Name 
    public virtual IList<string> Values 
} 

這是我如何映射它:

 mapping.Component(x => x.SuppoertedModel, y => 
     { 
     y.Map(x => x.Name, "FAMILY_ID"); 
     y.HasMany(x => x.Values).Element("VALUE").Table("SUPPORTEDMODULS") 
     } 

2表創建:

  1. PhoneModel 列「 FAMILY_ID「
  2. 支持模式 列 「VALUE」, 「PHONE_MODEL_ID」

的問題是,當我添加值,則將不會把它保存到SUPPORTEDMODELS表:

var pm = new PhoneModel(); 
pm.SupportedModels.Name = "11" 
pm.SupportedModels.Values.Add("34"); 
+0

爲了解決這個問題,「SupportModels」,「SuppoertedModel」,「SUPPORTEDMODULS」和「SUPPORTEDMODELS」應該引用同一張表,對吧? – 2012-08-08 07:14:20

+0

是的,我不想輸入真實姓名:) – 2012-08-08 07:37:45

回答

0
  • 你缺少HasMany(x => x.Values).Cascade.AllDeleteOrphan()
  • 也許session.Flush()或transaction.Commit()缺少測試代碼

btw:如果的順序並不重要,然後將其更改爲ICollection<string>HasMany().AsSet(),因爲這允許NH優化某些內容,並且代碼不能依賴於使用sql時不可依賴的順序。