我有一个从数据库中移除项目的一个问题,如果一个多将它们连接到多关系如何在实体框架删除许多一对多的关系,6
我的数据库看起来像
| [Project] | <-- | [JobInProject] | --> | [Job] |
============= ================== =========
| ProjectID | | JobInProjectID | | JobID |
| | | ProjectID | | |
| | | JobID | | |
从Project
和Job
表的主键也设置为其他表的外键,但我想是因为当我从Job
表中删除的项目,它是正确与所有相关的项目在其他表中删除这不是问题
Project project = await db.Projects.FindAsync(id);
db.Entry(project).State = EntityState.Deleted;
await db.SaveChangesAsync();
代码删除项目项删除:个所有外键被约束,对级联更新
编码删除级联,我用它来删除作业项
Job job = await db.Jobs.FindAsync(id);
db.Entry(job).State = EntityState.Deleted;
await db.SaveChangesAsync();
和项目设置只有来自Project
表的数据和JobInProject
表中的数据不会删除Job
及相关项目。
当我修改代码以删除Project
这样的:
Project project = await db.Projects.FindAsync(id);
foreach (var item in project.JobInProjects)
{
db.Entry(item.Job).State = EntityState.Deleted;
}
db.Entry(project).State = EntityState.Deleted;
await db.SaveChangesAsync();
我上await db.SaveChangesAsync();
线
错误操作失败:关系不能因为一个或多个的改变外键属性是不可空的。当对关系进行更改时,相关的外键属性将设置为空值。如果外键不支持空值,则必须定义新的关系,必须为外键属性指定另一个非空值,或者必须删除不相关的对象。
如何删除Project
项目及相关项目Job
项目?
我会很感激的帮助
'Project和Job表中的主键也被设置为其他表中的外键,您怎么能够在多对多关系中有一个*外键给另一个实体?这意味着你有一对一的关系 –