Каскадное удаление отношения «многие ко многим» в структуре сущностей - PullRequest
0 голосов
/ 01 декабря 2011

В моей базе данных три таблицы:

Articles: ArticleID (PK) 
Tags: TagiID (PK)
ArticleTagMapping: ArticleID(FK,PK), TagID(FK,PK)

ArticleTagMapping имеет составной первичный ключ. Это привело к тому, что в моей модели сущностей сложились отношения многие ко многим, как и ожидалось. Я установил оба отношения внешнего ключа для каскадного удаления в базе данных.

Я пытаюсь удалить статью с помощью кода C #. Это ошибки ...

var ArticleToDelete = context.Articles.SingleOrDefault(x => x.ArticleID == ArticleID);
context.Articles.DeleteObject(ArticleToDelete);
context.SaveChanges();

Я хочу удалить все записи ArticleTagMapping для этой статьи, не затрагивая записи тегов. Я не хочу удалять любые записи из таблицы тегов, но только записи из таблицы сопоставления. Нужна помощь здесь ...

Ответы [ 2 ]

2 голосов
/ 01 декабря 2011

Вы не показали нам ошибку.Но я подозреваю, что у вас проблемы с отношениями, которые мешают удалить объект.

в SQL Server Management studio, щелкните правой кнопкой мыши ArticleTagMapping таблица-> Design -> Щелкните правой кнопкой мыши -> Relationships...
Теперь выберите отношение между Articles таблицей и ArticleTagMapping таблицей,Разверните INSERT And UPDATE Specification и измените оба правила на Cascade.При этом при каждом удалении статьи все связанные отношения в таблице ArticleTagMapping будут удаляться автоматически:

var article = context.Articles.SingleOrDefault(a => a.ID == articleID);
context.DeleteObject(article);
0 голосов
/ 08 апреля 2016

Просто чтобы обновить ответы, касающиеся EF6:

Если установлены внешние ключи, ссылочная целостность должна выполняться автоматически через СУБД при удалении родительских объектов.

Если вы сначала используете код, насколько я узнал в руководстве по MVA, ON DELETE CASCADE - это поведение по умолчанию, установленное EF6.Если сначала запускается DB, вы должны изменить свои дочерние таблицы ...

Вот ссылка: https://mva.microsoft.com/en-US/training-courses/implementing-entity-framework-with-mvc-8931?l=pjxcgEC3_7104984382 В Видео она упоминается в 20:00 вверх и в слайд-презентации сказано на странице 14 .

Приветствия

...