簡體   English   中英

流利的Nhibernate映射字典創建額外的表

[英]Fluent Nhibernate Mapping Dictionary Creates Extra Table

我有一個LanguageMap對象,其中包含一個字典,用於將語言代碼映射到它的值。 該對象用於許多需要多種語言的對象。 因此,它在我的數據模型中被引用。

 public class LanguageMap
{
    public virtual Guid Id { get; set; }
    public virtual IDictionary<String, String> Map { get; set; }

    public LanguageMap()
    {
        Map = new Dictionary<string, string>();
    }
}

我的映射如下:

public class LanguageMapMapping : ClassMap<LanguageMap>
{
    public LanguageMapMapping()
    {
        Id(x => x.Id);

        HasMany(x => x.Map)
            .Table("LanguageMapMap")
            .AsMap<string>("LanguageKey")
            .Element("value")
            .Cascade.All().Cascade.AllDeleteOrphan();

    }
}

在具有LanguageMap屬性的所有類(例如, public virtual LanguageMap Details{ get; set; } )上,該屬性的映射為:

References(x => x.Details)

出於某種原因,這總是在數據庫中創建一個額外的表: 在此輸入圖像描述

語言映射表是不必要的,只是無緣無故地添加額外的連接。

知道如何修復映射嗎?

NHibernate創建了附加表,因為它需要一個Id。

沒有表語言,NHibernate將無法提供唯一的映射鍵。 想象一下,您有2個表需要將用戶和角色鏈接到LanguageMapMap表,並且兩者都可以具有Id = 1實體。 如果這兩個實體都需要LanguageMapMap表中的條目,NHibernate將無法將它們放在一起。

暫無
暫無

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

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