首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EF不能删除对象

EF不能删除对象
EN

Stack Overflow用户
提问于 2019-07-10 22:12:34
回答 2查看 425关注 0票数 0

在我的模型中,我有类似的表:

  • Persons (ID-NAME) (1-保罗-2-弗兰克-3-乔治)
  • Roles (ID-NAME) (1-管理-2-开发人员-3-初级)
  • Persons_Roles (ID_PERSON Not Null - ID_ROLE非空,例如(1-1 - 1-2 -2-2-2- 2-1 - 3-2)

Persons_RolesPersons表和Roles表上都有一个外键。

我需要删除一个角色。我真的知道

代码语言:javascript
复制
Persons oP = DbContext.Persons.Single(p=>p.ID == 1);
Persons_Roles oR = oP.Persons_Roles.Single(p=>p.ID_ROLE == 2);
oP.Persons_Roles.Remove(oR);
DbContext.SaveChanges();

但我知道这个错误

操作失败:由于一个或多个外键属性不可空,关系无法更改。当对关系进行更改时,相关的外键属性将设置为空值。如果外键不支持空值,则必须定义新的关系,必须为外键属性分配另一个非空值,或者必须删除不相关的对象。

为什么我要得到这个错误,我要做什么来修复它?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-11 04:21:52

如果要删除规则,则必须首先删除所有被重新引用到该规则的记录。例如,必须首先清除Person_Roles表中的所有记录,然后从角色表中删除规则。

代码语言:javascript
复制
var personRoles = DbContext.Persons_Roles.Where(p=>p.ID_ROLE == 2).ToList();
DbContext.Persons_Roles.RemoveRange(personRoles);
var role = DbContect.Roles.Single(a=>a.ID==2);
DbContext.Roles.Remove(role);
DbContext.SaveChanges();
票数 1
EN

Stack Overflow用户

发布于 2019-07-11 03:24:40

如果将其他表引用为外键,则无法删除数据,但您可以通过

从引用表中移除值之后,您只能执行删除操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56979306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档