2013-07-19 72 views
0

我在這種情況下我:
NHibernate的未找到=「忽略」和原始字段值

Table A 
id 
name 
country 

和國家

Table Country 
country 
name 

的表中的字段國家2-數字ISO(US,PA,UY等)。 表A中的字段國家在表格國家中引用字段iso。 我在(A級和班級國家)nHibernate上創建了類,因爲我沒有設置所有的國家未找到=「忽略」

Class A 
string name; 
Country country; 

Class Country 
string iso; 
string name; 

如果我想要得到的ISO代碼,我會用Y艙的.NET屬性,A.country.iso。 現在,如果我有一個ISO代碼不存在於表格國家,A.country.iso會發出異常,因爲國家對象爲空。但是表A的國家字段不爲空,我想要獲取它們的值。
我該怎麼做?

回答

0

只需將一個附加字符串屬性添加到A類中,該類可直接映射到ISO代碼列作爲屬性。然後,如果country屬性爲空,則可以使用該屬性。我也會將它標記爲只讀(更新並插入false),否則它可能會讓A類的用戶感到困惑,他應該使用哪個屬性。

樣品的編號:

public class A 
{ 
    private Country _country; 

    public virtual string CountryIsoCode { get; private set; } 

    public virtual Country Country 
    { 
     get 
     { 
      return _country; 
     } 
     set 
     { 
      _country = value; 
      CountryIsoCode = value != null ? value.IsoCode : null; 
     } 
    } 

映射:

<property name="CountryIsoCode" column="country" insert="false" update="false" />