是否可以删除Entity Framework中的链式导航属性

时间:2013-07-30 20:22:22

标签: c# sql entity-framework

假设我有一个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不支持指定的类型成员“Manager”。仅支持初始值设定项,实体成员和实体导航属性。

我经常查询Employee表,然后想要与员工一起显示公司和部门信息。因此,有许多行Employee.Manager.Department.Company.Field,这使得它看起来很混乱。

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

思考,欢迎提出意见

1 个答案:

答案 0 :(得分:1)

没有setter的

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