如何描述实体框架能够正确序列化/反序列化的自定义数据类型

本文关键字:序列化 反序列化 定义数据类型 何描述 描述 框架 实体 | 更新日期: 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,它就会设置并忘记它。