2015-03-25 28 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