Fluent nhibernate Fluent NHibernate多态性映射挑战

Fluent nhibernate Fluent NHibernate多态性映射挑战,fluent-nhibernate,mapping,polymorphism,Fluent Nhibernate,Mapping,Polymorphism,我在Fluent Nhibernate中使用每个具体类的表映射以下场景时遇到一些问题: 假设我有以下类定义: public class Reading { .... } public class CarReading : Reading { .... } public class TruckReading : Reading { .... } public class Alert { .... public virtual Reading AReading { get;

我在Fluent Nhibernate中使用每个具体类的表映射以下场景时遇到一些问题:

假设我有以下类定义:

public class Reading { .... }

public class CarReading : Reading { .... }

public class TruckReading : Reading { .... }

public class Alert 
{
    ....
    public virtual Reading AReading { get; set; }
}
因此,我的问题是如何为警报创建映射类,如果它与读取类(可以是卡车读取或汽车读取)有一对一的关系,并指示nhibernate知道从哪个表加载数据(卡车读取表或CarReading表)

公共类警报映射:类映射
{
....
HasOne(x=>x.AReading);
}
如果有人能给我指出正确的方向,我将不胜感激

谢谢。

公共类警报地图:类地图
public class AlertMap : ClassMap<Alert>
{
    ....
    ReferenceAny(x => x.AReading)
        .EntityIdentifierColumn("readingid")
        .EntityTypeColumn("readingtype")
        .IdentityType<int>()
        .AddMetaValue<CarReading>("car")
        .AddMetaValue<TruckReading>("truck");
}
{ .... ReferenceAny(x=>x.AReading) .EntityIdentifierColumn(“读取ID”) .EntityTypeColumn(“readingtype”) .IdentityType() .AddMetaValue(“car”) .AddMetaValue(“卡车”); }
谢谢您的回复。您在AddMetaValue中输入的值是我存储在数据库ReadingType列中的值吗?是的,NH在创建代理时使用这些值来确定引用的类型以及查询哪个表
public class AlertMap : ClassMap<Alert>
{
    ....
    ReferenceAny(x => x.AReading)
        .EntityIdentifierColumn("readingid")
        .EntityTypeColumn("readingtype")
        .IdentityType<int>()
        .AddMetaValue<CarReading>("car")
        .AddMetaValue<TruckReading>("truck");
}