6

我有这种情况:

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 类?

4

1 回答 1

2

三天后,我终于找到了解决这个问题的方法。拥有是不够的IncludeBase<T>()。您也必须映射基类。所以解决方案是:

AutoMap
  .AssemblyOf<ABase>()
  .Where(type=>type.IsSubclassOf(typeof(A)) || type==typeof(A))
  .IncludeBase<A>();

我希望它会帮助一些类似的问题......

于 2013-04-15T12:56:20.937 回答