我有这种情况:
public namespace ANamespace
{
public abstract class ABase:IABase
{
//properties
}
public abstract class A : ABase
{
//properties
}
public class A1 : A
{
//properties
}
public class A2 : A
{
//properties
}
}
如果我使用此映射代码:
AutoMap
.AssemblyOf<ABase>()
.Where(e => e.Namespace == "ANamespace")
.IncludeBase<A>().IgnoreBase<ABase>();
仅创建一个表(具有ABase和A属性)。如果删除IncludeBase(),则会创建A1和A2(具有所有属性)。
AutoMap
.AssemblyOf<ABase>()
.Where(e => e.Namespace == "ANamespace")
.IgnoreBase<ABase>();
如何编写映射以在数据库中为类A(具有所有A和ABase属性),A1和A2(具有特定属性)而不是对于ABase类具有表?
最佳答案
三天后,我终于找到了解决此问题的方法。拥有IncludeBase<T>()
是不够的。您也必须映射基类。因此,解决方案是:
AutoMap
.AssemblyOf<ABase>()
.Where(type=>type.IsSubclassOf(typeof(A)) || type==typeof(A))
.IncludeBase<A>();
我希望它将帮助解决一些类似的问题...
关于c# - 使用Fluent nhibernate自动映射继承,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15943736/