Fluent nHibernate - 将多态 属性 映射到 table 中的单个列

Fluent nHibernate - Mapping a polymorphic property to a single column in the table

我有类似下面的 类 的内容,我想将 Foo 映射到具有两列的单个 table,IdState 具有 1, "BigState"2, "LittleState" 之类的值,但我真的很难为此找到地图示例。

public class Foo 
{
    public int Id { get; set; }
    public State State { get; set; }
}

public abstract class State
{
}

public class BigState : State
{
}

public class LittleState : State
{
}

https://nhibernate.info/doc/nhibernate-reference/inheritance.html

您对 table 每个 class 层次结构策略感兴趣。您的第二列将是鉴别器列。当您使用 FluentNhibernate 时,您可以从 DefaultAutomappingConfiguration 派生并覆盖方法 AbstractClassIsLayerSupertypeIsDiscriminatedGetDiscriminatorColumn。您还需要实施 IClassConventionISubclassConvention 以提供 class 名称作为鉴别器值,类似的东西。

public class SubclassConvention : ISubclassConvention
{
    public void Apply(ISubclassInstance instance)
    {
        instance.DiscriminatorValue(instance.EntityType.Name);
    }
}