根据子类型映射到不同的视图

时间:2012-10-21 22:56:24

标签: fluent-nhibernate fluent-nhibernate-mapping

所以我有一种情况,我有共同的基本类型,但我需要根据子类型映射到不同的视图。

看起来我可以使用通用映射类来处理继承

http://geekswithblogs.net/nharrison/archive/2010/07/09/inheriting-a-class-map-in-fluent-nhibernate.aspx

但是我如何根据子类型有条件地映射到不同的视图?我看到一个EntityType属性,但它说它已过时,并将在下一个版本中变为私有。

作为一个例子,我有一个ContactInfo的基类是联系人类型之间的标准,但是值取决于联系人类型来自不同的地方,我将通过sql视图处理。

1 个答案:

答案 0 :(得分:0)

使用任何映射,引用的实体来自不同的表

class ContactInfo
{
    public virtual long Id { get; set; }
    public virtual ContactDetails Details { get; set; }
}

public ContactInfoMap
{
    ...
    ReferencesAny(x => x.Details)
        .EntityIdentifierColumn("details_id")
        .EntityTypeColumn("contactType")
        .IdentityType<long>()
        .AddMetaValue<FooContactDetails>("1")
        .AddMetaValue<BarContactDetails>("4");
}