我有几个实体可以访问同一个表。我想把它们放在一个类层次结构中。我不希望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”嵌套类的模式导出?
答案 0 :(得分:1)
我将所有层次结构移动到抽象类,并将每个实体设置为从该层次结构继承相应的类。因为我的ShouldMap现在忽略了抽象类,所以它可以工作。