[英]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.