看起來將字典保存到數據庫的通用正確方法就是它的枚舉方式,因爲表本質上是一個鬆散的訂單概念的集合 - 就像IEnumerable一樣。也就是說,一個字典被列舉爲IEnumerator的< KeyValuePair < TKEY的,TValue>中>等表應該有2列:
Key
Value
從那裏,你有複雜類型,現有EF公約,其中關鍵實際上可能成爲具有許多特性的對象,並且也是有價值的。例如用戶對象的字典可能看起來像:
Username (TKey)
Address1 (TValue)
Address2 (TValue)
這是不幸這個廣義化是沒有內置到EF;應該提出。
您可以使用生成KeyValuePair的數據註釋版本的廣義類,而不是爲解決方案開發特定類型。
public class EFKeyValuePair<TKey, TValue>
{
[Key]
public TKey Key { get; set; }
public TValue Value { get; set; }
}
我不能確定你如何確保表名會以邏輯和可覈查的方式寫出然而沒有繼承這個類,並添加到每個子類的屬性。也許流利的API可以讓你最後一步(我不太熟悉)。