无法将EF实体集添加到字典中

时间:2013-01-14 09:14:07

标签: c# entity-framework inheritance

我正在尝试将EF实体集添加到字典中,如下面的代码所示:

private static readonly Dictionary<string, ObjectSet<EntityObject>> Gateways 
    = new Dictionary<string, ObjectSet<EntityObject>>
{
    {"PlanSection", ModelEntities.PlanSection}
};

但是编译器说:

cannot convert from 'System.Data.Objects.ObjectSet<MathApplication.Models.PlanSection>' to 'System.Data.Objects.ObjectSet<System.Data.Objects.DataClasses.EntityObject>'

PlanSection是从数据库表映射的类。我的代码有什么问题?

修改 这是PlanSection定义:

public partial class PlanSection : EntityObject

2 个答案:

答案 0 :(得分:1)

您有两个不同的对象

MathApplication.Models.PlanSection

System.Data.Objects.DataClasses.EntityObject

检查您的代码并在两侧使用正确的单个对象。

答案 1 :(得分:1)

你真的需要Dictionary包含一个ObjectSet,或者它是否足以拥有那里的实体列表。

如果实体列表足够,那么为什么不将该成员设置为IEnumerable,然后将其添加为值ModelEntities.PlanSection.LoadAll()或其他内容。

如果您打算将所有对象集合在该字典中,那么尝试创建一个将由您的所有实体实现的接口,然后将字典的值Type设置为IEnumerable。

或者,arround的另一种方式是尝试创建一个具有动态类型作为值的字典,然后编译器会让你一个人认为,但是在使用字典里面的值时你会遇到其他问题你必须将它们转换为能够在设计时访问属性。