将数据保存为varbinary以解决sql_variant问题

时间:2015-03-25 14:11:19

标签: sql entity-framework

我一直忙于一个需要在表格中存储不同类型设置的项目。我的第一个想法是使用sql_variant,但由于项目严重依赖于实体框架,因此这不是一个选项(仍然没有支持)。

我想我也可以简单地将数据存储为二进制文件,并根据类型对数据进行解码。我的表看起来像这样;

+------------+-------------+------------+------
|    Data    |    Type     |   Name     | ...
+------------+-------------+------------+------
|  varbinary |  nvarchar   |  nvarchar  | ...
+------------+-------------+------------+------

然后一个简单的代码实现(在这里使用C#);

public object GetDecodedObject(string settingName)
{
    Settings settings = db.Settings.Where(s => s.Name == settingName).FirstOrDefault();
    switch(settings.Type)
    {
        case "pdf":
             return DecodeAsPdf(settings.Data);
             break;
        case "int32":
             return DecodeAsInt32(settings.Data);
             break;
        ...
        default:
             return null; 
             break;
    }
}

当然,这段代码只是作为一个例子。

我的问题是;

这是一个可行的选择,还是有其他(更好)的方法呢?

互联网上没有太多可以找到的内容。 我查看了SqlVariant,但该解决方案的问题在于它是只读的。我也要写。

添加了标签“entity-framework”,因为可能有人为sql_variant的解决方法提供了更好的解决方案。

0 个答案:

没有答案