我正在构建一个C#项目配置系统,它将配置值存储在SQL Server数据库中。
我原本打算将表格设置为:
KeyId int
FieldName varchar
DataType varchar
StringValue varchar
IntValue int
DecimalValue decimal
...
将使用DataType列中的值来确定值,以确定要使用哪个Value列,但我真的不喜欢该设计。所以我以为我会走这条路:
KeyId int
FieldName varchar
DataType varchar
Value varbinary
这里DataType中的值仍然会确定返回的Value的类型,但它将全部在一列中,我不必编写大量的重载来容纳不同的类型,就像我之前的那样解。我只是将Value in作为一个字节数组,并使用DataType来执行获取我的Value所需的任何转换。
varbinary方法是否会导致任何性能问题,或者将所有这些不同类型的数据放入varbinary中只是不好的做法?我一直在寻找大约一个小时,我无法得到明确的答案。
此外,如果有一个更优选的方法,任何人都可以想到得出相同的结论,我都是耳朵(或眼睛)。
答案 0 :(得分:2)
您可以将设置序列化为JSON,并将其存储为字符串。然后,您可以在一行中进行所有设置,并且您的客户端可以根据需要进行反序列化。这也是一种在不对数据库进行任何修改的情况下随时添加其他设置的安全方法。
答案 1 :(得分:1)