展平映射和模式导出的类层次结构(只读基类!)

时间:2014-08-06 15:04:43

标签: c# nhibernate fluent-nhibernate fluent-nhibernate-mapping

我有几个实体可以访问同一个表。我想把它们放在一个类层次结构中。我不希望nhibernate在映射中生成任何连接子类或鉴别器。当我返回IsDiscriminated = false时,它会生成我不需要的连接子类(并尝试对它们进行模式导出)。

我尝试使用

public class SimpleFormConventions : IClassConvention, IClassConventionAcceptance
{
    public void Apply(IClassInstance instance)
    {
        instance.SchemaAction.None();
        instance.ReadOnly();
    }

    public void Accept(IAcceptanceCriteria<IClassInspector> criteria)
    {
        criteria.Expect(x => Check(x.EntityType));
    }

    public static bool Check(Type type)
    {
        string typeName = type.FullName;
        string ns = type.Namespace;
        typeName = typeName.Substring(ns.Length + 1);
        return typeName.StartsWith("SimpleForm+");
    }
}

它正确运行但是架构导出忽略它并仍然尝试导出这些类。我怎样才能实现每个类只被视为“展平”而不在映射中生成连接子类?如何禁用这些“SimpleForm”嵌套类的模式导出?

1 个答案:

答案 0 :(得分:1)

我将所有层次结构移动到抽象类,并将每个实体设置为从该层次结构继承相应的类。因为我的ShouldMap现在忽略了抽象类,所以它可以工作。