Fluent nhibernate 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;
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");
}