使用RIA Services和Entity Framework通过导航属性从数据库表中删除实体

问题描述

|| 我有3个规范化的表,由员工,部门和EmployeesToDepartments组成。我希望能够将一个Employee分配给一个或多个Department,因此将链接表(EmployeesToDepartments)。我可以使用以下导航属性成功查询数据库提取实体的完整层次结构
this.ObjectContext.Employees.Include(\"EmployeesToDepartments\").Include(\"EmployeesToDepartments.Department\")
加上元数据中的[包含]属性,因此允许我访问给定员工的部门。在尝试删除[EmployeesToDepartments]表中[Employee]和[Department]之间的链接后,出现了外键约束错误。 我简化了模型,只在[Employees]和[EmployeesToDepartments]之间包含一个导航属性。 [Employees]。[ID]和[EmployeesToDepartments]。[IDEmployee]之间的外键约束阻止我更新EmployeesToDepartments表。通过“关系”设置将其删除后,我现在可以更新表格。我现在可以执行以下代码
foreach (var rel in _employee.EmployeesToDepartments)
{
    _employee.EmployeesToDepartments.Remove(rel);
}

_domainContext.SubmitChanges();
没有错误。 我期望看到RelEmployeesToDepartments中带有IDEmployee的条目已被删除。我在表中看到的是IDEmployee以前的值0。 是否可以强制执行DELETE语句?我在这里误解了基本概念吗? 任何帮助将非常感激。     

解决方法

        在导航属性中删除实体只会中断实体之间的链接。您必须从EntitySet中删除才能实现所需的功能。 例如) myDomainContext.EmployeeDepartments.Remove(employeeDepartmentToRemove); myDomainContext.SubmitChanges();