【问题标题】:Is it possible remove chained navigation properties in Entity Framework是否可以删除实体框架中的链式导航属性
【发布时间】:2013-07-30 20:22:22
【问题描述】:

假设我有一个 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 表更好还是会影响数据库规范化?什么样的范式描述了这些问题?

欢迎提出意见和建议

【问题讨论】:

    标签: c# sql entity-framework


    【解决方案1】:

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

    【讨论】:

    • 我尝试添加一个 setter set {Order.Event = value;},但我仍然得到同样的错误。
    • 你不会添加setter,首先让你的模型工作,然后你的代码是正确的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多