流畅的NHibernate多态映射挑战

时间:2012-10-10 04:39:40

标签: fluent-nhibernate mapping polymorphism

我在使用Table Per Concrete类在Fluent Nhibernate中映射以下场景时遇到了一些问题:

假设我有以下类定义:

public class Reading { .... }

public class CarReading : Reading { .... }

public class TruckReading : Reading { .... }

public class Alert 
{
    ....
    public virtual Reading AReading { get; set; }
}

所以我的问题是如何为Alert创建映射类,如果它与读取类具有一对一的关系(可以是卡车读取或汽车读取)并指示nhibernate知道从哪个表加载数据( TruckReading表或CarReading表)

public class AlertMap : ClassMap<Alert>
{
    ....
    HasOne(x => x.AReading);
}

如果有人能指出我正确的方向,我会非常感激。

感谢。

1 个答案:

答案 0 :(得分:0)

public class AlertMap : ClassMap<Alert>
{
    ....
    ReferenceAny(x => x.AReading)
        .EntityIdentifierColumn("readingid")
        .EntityTypeColumn("readingtype")
        .IdentityType<int>()
        .AddMetaValue<CarReading>("car")
        .AddMetaValue<TruckReading>("truck");
}