如何解决使用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();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。