Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将数据保存为varbinary以解决sql_变量_Sql_Entity Framework - Fatal编程技术网

将数据保存为varbinary以解决sql_变量

将数据保存为varbinary以解决sql_变量,sql,entity-framework,Sql,Entity Framework,我一直忙于一个项目,它要求在一个表中存储不同类型的设置。我的第一个想法是使用sql_变体,但由于项目严重依赖实体框架,所以这不是一个选项,它仍然没有支持 我想我也可以简单地将数据存储为二进制,并根据需要对其进行解码。我的桌子看起来像这样 +------------+-------------+------------+------ | Data | Type | Name | ... +------------+-------------+---------

我一直忙于一个项目,它要求在一个表中存储不同类型的设置。我的第一个想法是使用sql_变体,但由于项目严重依赖实体框架,所以这不是一个选项,它仍然没有支持

我想我也可以简单地将数据存储为二进制,并根据需要对其进行解码。我的桌子看起来像这样

+------------+-------------+------------+------
|    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;
    }
}
当然,这里的代码只是一个示例

我的问题是,

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

关于这一点,在互联网上找不到多少。 我已经研究过了,但是这个解决方案的问题是它是只读的。我也得写


添加标记实体框架是因为可能有人有更好的解决方案来解决sql变量。

您认为数据大小会有多大?我要的是PDF格式,我不担心int.@SurgeonofDeath老实说,我还不知道。但是,考虑到目前的情况,存储一些BLOB是没有问题的。这完全取决于数据大小,如果您认为可能有文章中提到的超过1MB的数据,建议使用FileStream功能。@surgeOnOffeath有趣的链接,谢谢!