是否可以在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);
答案 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[]
(如果使用)二进制序列化器)。此数据将存储在数据库表的单列
有几个问题: