【问题标题】:Fluent NHibernate Polymorphic Mapping ChallengesFluent NHibernate 多态映射挑战
【发布时间】:2012-09-30 11:50:22
【问题描述】:

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

假设我有以下类定义:

public class Reading { .... }

public class CarReading : Reading { .... }

public class TruckReading : Reading { .... }

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

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

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

如果有人能指出我正确的方向,那将不胜感激。

谢谢。

【问题讨论】:

    标签: fluent-nhibernate mapping polymorphism


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

    【讨论】:

    • 感谢您的回复。您放入 AddMetaValue 中的值,是我存储在数据库的 ReadingType 列中的值吗?
    • 是的,这也是NH在创建代理和查询哪个表时用来确定引用类型的值
    猜你喜欢
    • 1970-01-01
    • 2011-04-10
    • 1970-01-01
    • 2011-01-29
    • 1970-01-01
    • 2011-06-18
    • 1970-01-01
    • 2012-02-24
    相关资源
    最近更新 更多