我遇到这种情况:
Table A
id
name
country
和国家/地区表
Table Country
country
name
现场国家是2位数的ISO(美国,PA,UY等)。
表A中的字段国家引用表Country中的字段iso。
我在(A类和国家/地区)nHibernate上创建了类,因为我没有设置所有国家 not-found =“ignore”。
Class A
string name;
Country country;
Class Country
string iso;
string name;
如果我想获得ISO代码,我将使用y class的.net属性, A.country.iso 。 现在,如果我有一个不存在于表Country中的ISO代码,A.country.iso将给出一个异常,因为country对象为null。但是表A的 country 字段不为null,我想得到它们的值 我怎么能这样做?
答案 0 :(得分:0)
只需将另一个字符串属性添加到A
类,该类直接映射到ISO代码列作为属性。然后,如果country
属性为null,则可以使用该属性。我还将它标记为只读(更新并插入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" />