EF 5 Code First 字典映射

4

有没有办法使用Entity Framework 5映射字典?

根据我的搜索结果,直到EF 4.1版本,它还没有支持映射字典,不确定EF 5是否提供了任何创新方法来轻松映射它。

我正在使用字典来为类的每个对象存储“可变数量的属性”。

如果不支持,那么在这种情况下应该使用什么最佳替代数据结构(受EF支持)?

1个回答

6

目前不支持字典类型。您必须使用传统的一对多关系,将字典中的每个键/值对作为记录存储在表格中,并与外键关联到主实体(包含字典的实体)。实体应如下所示:

public class Item {
    public int Id { get; set; } // unique autogenerated database key
    public string Key { get; set; }
    public string Value { get; set; }
    public int PrincipalId { get; set; } // FK to principal entity
}

对于您当前的情况,属性类型和外键名称将有所不同。主实体只需具有:

public virtual ICollection<Item> Items { get; set; }

1
如果我以这种方式存储数据,是否仍然可以像访问字典中的数据一样访问它?我的意思是是否有一种方法可以将数据“提供”给未映射的字典对象并访问它(以便查找效率与字典一样高)? - Sidharth Mudgal
1
除非您在加载实体后自己创建字典,否则不会有。您将拥有由集合定义的关联和您的字典。您还需要同步字典中所做的更改以将其持久化到集合中。 - Ladislav Mrnka

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接