[英]Fluent Nhibernate Automapping with overrides: Map an unmapped base class collection
域名:
public class BaseClassClient
{
public virtual ICollection<BaseClass> BaseObjects{ get; set; }
}
public abstract class BaseClass
{
}
public class SubClass1 : BaseClass
{
}
public class SubClass2 : BaseClass
{
}
我得到錯誤Association references unmapped class
,即使兩個子類都被映射。 顯然,基類本身沒有映射。 請建議如何解決這個問題。
編輯
在關閉一個問題作為另一個問題之前,我寧願這樣做,他們只是不讀,但也關心理解這兩個問題。
我已經看到了錯誤:流暢的NHibernate映射,它引用了不同程序集中的映射 。 但它談到了一個不同的場景。
我的情況如下。
public class Product
{
public int Id { get; set; }
public ICollection<BasePricingRule> PricingRules{ get; set; }
}
public abstract class BasePricingRule
{
public int Id { get; set; }
//other properties
}
//Several concrete classes inherit from BasePricingRule.
我想每個具體類有一個表,基類沒有表。 因此, BasePricingRule
沒有映射。 我允許類自動映射,偶爾提供必要的覆蓋。 我為產品類創建了一個自動覆蓋,如下所示。
public void Override(FluentNHibernate.Automapping.AutoMapping<Product> mapping)
{
mapping.HasMany(product => product.PricingRules); //Not really sure
// about how to map this.
}
我已經看到像http://ayende.com/blog/3941/nhibernate-mapping-inheritance這樣的示例用於繼承映射。 但這些例子實際上並沒有解決我所面臨的問題。 不僅僅是錯誤,我想知道我應該如何通過流暢的NHibernate映射這個域,最好是使用自動覆蓋。
關鍵是,即使對於Table Per Concrete Class方法,您也必須映射基類。 只是不是你想的方式。 你應該看一下這篇很棒的文章: www.codeproject.com/Articles/232034/Inheritance-mapping-strategies-in-Fluent-Nhibernat
它或多或少會像這樣:
public class BaseClassMap : ClassMap<BaseClass> {
public BaseClassMap() {
// indicates that this class is the base
// one for the TPC inheritance strategy and that
// the values of its properties should
// be united with the values of derived classes
UseUnionSubclassForInheritanceMapping();
}
}
public class SubClass1Map : SubclassMap<SubClass1> {
public SubClass1Map() {
Table("SubClass1Table");
Abstract();
}
}
public class SubClass2Map : SubclassMap<SubClass2> {
public SubClass1Map() {
Table("SubClass2Table");
Abstract();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.