簡體   English   中英

流暢的Nhibernate Automapping with overrides:映射未映射的基類集合

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

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