2015-03-25 56 views
3

我有一個存放任意值的實體框架(代碼優先)表。這些值的類型可以從簡單的ints到完整的object s。什麼是最好的方式來存儲這種類型的數據?我有一個enum持有名爲TypeEnum在實體框架中存儲多類型值的最佳方法

public class Stream 
{ 
    public int Id { get; set; } 

    // Idea 1 
    public int IntegerValue { get; set; } 
    public double DoubleValue { get; set; } 
    public string StringValue { get; set; } 

    // Idea 2 
    public TypeEnum Type { get; set; } 
    public object Value { get; set; } 

    // Idea 3: Create tables for every value of TypeEnum 
} 

回答

0

一種方法是按照你的理念所有可用的類型1,並且具有對每個易於映射到的類型相匹配的類型的數據庫列類型的屬性數據庫。所以整數,雙精度和字符串都很簡單,就像你自己列出的那樣。

對於任意對象,您需要將其序列化爲XML或JSON之類的內容,然後將其保存到字符串字段中。這更復雜,因爲將來需要時將其反序列化爲對象。

+0

爲什麼一個字符串字段 - 爲什麼不是一個BLOB? – user700390 2015-03-25 01:22:17

+0

我以爲你會使用一個轉換爲字符串的序列化程序。但是,是的,你可以序列化爲二進制數據。 – 2015-03-25 02:40:17