删除级联上的实体框架 [英] Entity Framework on delete cascade

查看:28
本文介绍了删除级联上的实体框架的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在删除 Entity Framework 4.1 中的相关行时遇到问题.我有关系表

I have problem with deleting related rows in Entity Framework 4.1. I have tables with relations

书 1<--->* 书本格式

Book 1<--->* BookFormats

我已经设置了 on delete 级联:

I have set the on delete cascade:

ALTER TABLE [dbo].[BookFormats]  WITH CHECK ADD  CONSTRAINT [FK_BookFormats_Book] 
FOREIGN KEY([BookID]) REFERENCES [dbo].[Book] ([BookID]) on delete cascade

EDMX 属性

然后,我想删除与我的 Book 对象相关的所有 BokFormats 项:

Then, I want to remove the all BokFormats items related to my Book object:

 var originalBook = m.db.Book.First(x => x.BookID == bookId);
 originalBook.BookFormats.Clear();
 m.db.SaveChanges();

但是,我得到了错误:

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

The operation failed: The relationship could not be changed because one or more of the foreign-key properties is non-nullable. When a change is made to a relationship, the related foreign-key property is set to a null value. If the foreign-key does not support null values, a new relationship must be defined, the foreign-key property must be assigned another non-null value, or the unrelated object must be deleted.

我想不出如何删除这些对象.有什么想法吗?

I ran out of ideas on how to delete these objects. Any ideas?

推荐答案

级联删除概念如下:

当您从数据库中删除 Book 时,SQL Server 将为您删除所有相关的 BookFormats(请注意,如何删除 并不重要)Book 将通过 EF 或原始 SQL 启动).因此,它与您的任务无关:我想删除与我的 Book 相关的所有 BookFormats".要完成它,您需要这样的东西:

When you delete Book from the DB all related BookFormats will be deleted for you by SQL Server (please note that it doesn't matter how deletion of Book will be initiated via EF or raw SQL). Thus it has nothing to do with your task: "I want to delete all BookFormats related to my Book". To accomplish it you need something like this:

foreach(var m in m.db.BookFormats.Where(f=>f.BookID == bookID))
{
    m.db.BookFormats.Remove(m);
}
m.db.SaveChanges();

这篇关于删除级联上的实体框架的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆