流畅的NHibernate,连接子类映射

Mar*_*oft 8 .net c# nhibernate orm fluent-nhibernate

我正在尝试使用Fluent NHibernate映射一个连接子类场景.我在名称空间Core中定义了一个类Entity,在名称空间SomeModule中有一个类SubClass:Entity

现在我显然不希望类Entity知道它的派生类型,SomeModules命名空间引用Core - 而不是相反.

我能够找到的所有例子都使用如下:

public class EntityMap : ClassMap<Entity> {
    public EntityMap() {
        Id(x => x.Id)

        var subClassMap = JoinedSubClass<SubClass>("SubClassId", sub => sub.Map(x => x.Id));

        subClassMap.Map(x => x.SomeProperty)
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

这根本不适用于我的情况 - 我需要类似于NHibernate xml映射的东西:

<joined-subclass name="SubClass" extends="Entity, Core" >
<key column="SubClassId" foreign-key="FK_KollegiumEntity"/>
<property name="Name" length="255" not-null="true" />
...
</joined-subclass>
Run Code Online (Sandbox Code Playgroud)

有没有人用Fluent NHibernate实现这一目标?

Sea*_*nch 10

我认为自从提出这个问题以来API已经发生了变化,但这对我有用:

public class SomeSubclassMap : SubclassMap<SomeSubclass> {
    public SomeSubclassMap()
    {
        KeyColumn("SomeKeyColumnID");
        Map(x => x.SomeSubClassProperty);
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

我相信KeyColumn仅在与'Baseclassname_id'不同时才需要

注意:ClassMap<SomeBaseClass>SomeSubClass 还应该有一个基类.


Mag*_*son 0

你好几天前做了一些类似的事情。

public class EntityMap : ClassMap<Entity> {
 public EntityMap() {
    Id(x => x.Id)

    JoinedSubClass<SubClass>("SubClassId", sub => { 
          sub.Map(x => x.Name); 
          sub.Map(x => x.SomeProperty); 
    });
 }
}
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你