nHibernate not-found =“ignore”和原始字段值

时间:2013-07-19 00:04:00

标签: nhibernate

我遇到这种情况:

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,我想得到它们的值 我怎么能这样做?

1 个答案:

答案 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" />