2009-07-22 68 views
1

從數據庫中檢索時,沒有賦值給任何子屬性值的組件也將被設​​置爲null。插入時NHibernate組件非空屬性

我不介意這一點,它只是一個額外的檢查,看看組件是否爲空。但是,當我嘗試然後更新或插入該對象到數據庫零組件我收到錯誤:

「非空屬性引用空或瞬態[全屬性名稱]」這似乎很可笑,怎麼來NHibernate會通過我一個NULL,但它不會接受它本身。

是否有一些映射選項我缺少重寫這個或者我真的必須設置組件更新或插入到數據庫之前的值?

感謝

回答

3

如果所有屬性都爲空的組件爲空本身,當你寫的,這是一種正常的行爲。

當你從數據庫中得到如果你使用公共setter的自動屬性,你可以有這樣的問題。

,如果你有這樣的:

public virtual MyComponent MyComponentObject { get; set; } 

你必須這樣做,而不是:

private MyComponent _myComponent; 
    public virtual MyComponent MyComponentObject 
    { 
     get 
     { 
      if (ReferenceEquals(null, _myComponent)) 
      { 
       _myComponent= new MyComponent(); 
      } 
      return _myComponent; 
     } 
     set 
     { 
      _myComponent = value; 
     } 
    } 

HTH,

克里斯-I,

+0

是啊,我想我做的。自動屬性真的讓我懶惰,如果這甚至沒有進入我的頭! 謝謝 – 2009-07-23 10:16:42