我有一个需要存储来自表单动态字段的数据的表。在使用过程中,最终用户应该说出他将输入的数据类型(文本、数字、日期时间等)并输入值。
UI 已准备就绪,当他们确定类型时,输入会更改为正确的格式。现在,我想知道如何将其存储到数据库中。
我应该为每种类型设置一列并将值仅存储在右列中吗?
或者我可以有一个类型的列TEXT,存储在那里并在读回时进行转换。
ps:我将有另一列来保存存储的值的类型,例如枚举器值。
PPS:我正在使用 C# 读取数据并将其写入 SQL Server。
谢谢
我有一个需要存储来自表单动态字段的数据的表。在使用过程中,最终用户应该说出他将输入的数据类型(文本、数字、日期时间等)并输入值。
UI 已准备就绪,当他们确定类型时,输入会更改为正确的格式。现在,我想知道如何将其存储到数据库中。
我应该为每种类型设置一列并将值仅存储在右列中吗?
或者我可以有一个类型的列TEXT,存储在那里并在读回时进行转换。
ps:我将有另一列来保存存储的值的类型,例如枚举器值。
PPS:我正在使用 C# 读取数据并将其写入 SQL Server。
谢谢
我认为最好的方法是将值序列化并将其存储为文本。然后您可以在您的 EF 实体中创建计算属性,以将其从文本反序列化为正确的类型
internal class Program
{
private static void Main(string[] args)
{
var myEntity = new MyEntity();
var someDateTime = DateTime.Now;
myEntity.DynamicDataValue = someDateTime;
var someDateTime2 = (DateTime) myEntity.DynamicDataValue;
Console.WriteLine(someDateTime2.AddHours(1));
}
public class MyEntity
{
public string DynamicData { get; set; }
public string DynamicDataType { get; set; }
[NotMapped]
public object DynamicDataValue
{
get => JsonConvert.DeserializeObject(DynamicData, Type.GetType(DynamicDataType));
set
{
DynamicData = JsonConvert.SerializeObject(value);
DynamicDataType = value.GetType().FullName;
}
}
}
}