C# – Entity Framework on delete cascade

ccascading-deletesentity-frameworkforeign-keys

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

Book 1<—>* BookFormats

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

The EDMX property

enter image description here

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();

But, I get the error:

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?

Best Answer

You can use RemoveRange :

m.db.BookFormats.RemoveRange(originalBook.BookFormats);
m.db.SaveChanges();

But this is for EF 6.0