1

假设我有一个 Company 表、一个 Department 表、一个 Manager 表和一个 Employee 表。列表中存在一对多关系。所以 Employee 表有一个 ManagerID 外键,Manager 表有一个 DepartmentID 键,以此类推。

我使用 EF 设计器创建 DbContext 和其他类。我在设计器中添加了表与外键之间的关联。问题是我无法在设计器中的 Employee 表和 Department 或 Company 表之间建立关联。

我尝试使用以下 Department 属性为 Employee 创建一个单独的部分类:

public Department Department {
    get { return this.Manager.Department; }
}

但是,当我运行程序时,出现以下异常:

LINQ to Entities 不支持指定的类型成员“经理”。仅支持初始化程序、实体成员和实体导航属性。

我经常查询Employee表,然后想和员工一起显示公司和部门的信息。所以有很多行Employee.Manager.Department.Company.Field,这使它看起来杂乱无章。

将 CompanyID 添加到 Manager 表并将 CompanyID 和 DepartmentID 添加到 Employee 表会更好,还是会影响数据库规范化?什么样的范式描述了这些问题?

欢迎提出想法、意见

4

1 回答 1

1

EF 完全忽略了没有设置器的属性,因此您得到的异常与那些代码无关。您的方法很好,如果您正确设置实体,它将起作用。

于 2013-07-30T20:30:59.860 回答