实体框架将多个属性序列化为一列

Ste*_*enQ 3 c# sql-server serialization entity-framework

我想将以下类映射到表,使用实体框架,最好使用流畅的 api。

public class MyEntity
{
    public int Id {get;set;}
    public string Name {get;set;}
    public int Age {get;set;}
    public string OtherData {get;set;}
    public List<Blabla> BlaBlaList {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

表 MyEntity:

column Id
column Name
column SerializedData
Run Code Online (Sandbox Code Playgroud)

是否可以仅将 Id 和 Name 映射到列,以及在“SerializedData”列中序列化的所有其他属性?

如果不是“仅”其他属性,则整个对象也可能在 SerializedData 列中被序列化

谢谢,史蒂文

Eri*_*ips 5

类似于德鲁的答案的另一个答案是执行以下操作:

public class MyEntity : IMySerializable
{
  public int Id {get;set;}
  public string Name {get;set;}

  [NotMapped]
  public int Age {get;set;}
  [NotMapped]
  public string OtherData {get;set;}
  [NotMapped]
  public List<Blabla> BlaBlaList {get;set;}

  public byte[] SerializedData  
  {
    get
    {
      return this.MySerialize();
    } 
    set 
    {
      this.MyDeserialize(value);
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

然后是一种扩展方法,允许您对多个实体执行此操作:

public static IMySerializableExtensions
{
  public static byte[] MySerialize<T>(this T instance)
    where T : IMySerializable
  {
    byte[] result = // ...

    // code

    return result;
  }

  public static void MyDeserialize<T>(this T instance, byte[] value)
    where T : IMySerializable
  {
     // deserialize value and update values
  }
}
Run Code Online (Sandbox Code Playgroud)

您可以找出要反序列化/序列化的属性,因为它们将具有NotMappedAttribute