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