EF 6.1 Code First中原始类型集合的流畅映射

时间:2014-06-03 19:52:36

标签: entity-framework ef-code-first

是否可以在Entity Framework 6.1 Code First中对基本类型的集合属性进行流畅映射?

我知道早期版本无法做到这一点。

例如:

public class Foo
{
      public int Id;
      public virtual List<string> Bar;
}

具有流畅的映射:

modelBuilder.Entity<Foo>()
            .HasMany<string>(f => f.Bar);

1 个答案:

答案 0 :(得分:0)

在EF中,它不能直接捐赠。但是,有一种解决方法:您可以创建一个未映射到数据库的集合属性,以及另一个映射到DB的属性,该属性包含集合的序列化版本。如果集合中包含许多元素,则会遇到性能问题。如果没有,可以使用它。

Seudocode:

public class Entity
{
  [NotMapped]
  public List<string> MyStrings 
  { 
     get { return Serializer.Deserialize(SerializedMyStrings); }
     set { SerializedMyStrings = Serializer.Serialize(value); } 
  }

  // Mapped to DB
  public string SerializedMyString { get; set; }

}

注意:取决于序列化程序实现,该属性可以是string(XML,JSON,带有特殊分隔符的连接,即由文本表示的任何内容)或byte[](如果使用)二进制序列化器)。此数据将存储在数据库表的单列

有几个问题: