我有一个表,该表需要存储表单动态字段中的数据。在使用过程中,最终用户应说出他将输入的数据类型(文本,数字,日期时间等)并输入值。
UI就绪,当他们确定类型时,输入将更改为正确的格式。现在,我想知道如何将其存储到数据库中。
我应该为每种类型保留一列,并将值仅存储在右列中吗?
或者我是否可以将一列类型为TEXT
的列存储在那里并在读回时进行转换。
ps:我将在另一列中保存存储的值的类型,例如枚举器值。
PPS:我正在使用C#读取数据并将其写入SQL Server。
谢谢
答案 0 :(得分:1)
我认为最好的方法是序列化值并将其存储为文本。然后,您可以在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;
}
}
}
}