如何描述实体框架能够正确序列化/反序列化的自定义数据类型
本文关键字:序列化 反序列化 定义数据类型 何描述 描述 框架 实体 | 更新日期: 2023-09-27 18:27:16
有一个这种类型的模型:
public class Pub
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
public StringList Items { get; set; } // <--
}
类StringList包含属性Value,该属性对字符串执行序列化/反序列化。
public class StringList
{
...
public string Value
{
get { return this.ToString(); }
set { this.FillFromString(value); }
}
}
如何解释EF,当从数据库中填充模型时,您需要在模型中设置值。Items.Value,并在从模型读取到数据库时从模型中检索值。项目。价值?
您无法让实体框架执行任何操作。它并不是为了操作数据而设计的,只是为了检索数据。然而,你可以用迂回的方式解决这个问题。知道实体框架将只填充数据库数据中的属性,您可以执行以下操作:
public string ItemsString { get; set; }
[NotMapped]
public string Items
{
get { return FillFromString(ItemsString); }
set { ItemsString = value.ToString(); }
}
换句话说,ItemsString
是持久化的,然后Items
属性将其动态转换为所需的任何结构。您只需在应用程序中根据需要使用Items
,它就会设置并忘记它。