簡體   English   中英

使用Fluent nhibernate自動映射繼承

[英]Automapping inheritance with Fluent nhibernate

我有這種情況:

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>();

我希望它將幫助解決一些類似的問題...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM