2015-03-25 3 views
3

У меня есть таблица Entity Framework (Code First), которая содержит произвольные значения. Значения могут иметь типы, которые варьируются от простых ints до полного размывания object s. Каков наилучший способ хранения данных этого типа? У меня есть enum, который содержит все те доступные типы именованных TypeEnumЛучший способ хранения многотипных значений в Entity Framework

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 и имеют напечатанный свойство, которое соответствует столбец базы данных типизированного для каждого из типов, которые легко сопоставляются к база данных. Так что целое число, double и string достаточно просты, как вы сами указали.

Для произвольного объекта вам потребуется сериализовать его на нечто вроде XML или JSON, а затем сохранить в поле строки. Это сложнее, потому что вам нужно снова десериализовать его обратно на объект, когда это необходимо в будущем.

+0

Почему поле строки - почему не BLOB? – user700390

+0

Я предположил, что вы будете использовать сериализатор, который преобразуется в строку. Но да, вы могли бы сериализоваться на двоичные данные. –

Смежные вопросы