我一直忙于一个需要在表格中存储不同类型设置的项目。我的第一个想法是使用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
的解决方法提供了更好的解决方案。