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