У меня связь «многие ко многим» между двумя столами, скажем, «Друзья» и «Еда». Если другу нравится еда, я вставляю строку в таблицу FriendsFoods, например:
ID Friend Food
1 'Tom' 'Pizza'
FriendsFoods имеет первичный ключ «ID» и два ненулевых внешних ключа «Друг» и «Еда» для таблиц «Друзья» и «Еда» соответственно.
Теперь предположим, что у меня есть Friend tom
.NET-объект, соответствующий «Тому», и Том больше не любит пиццу (что с ним не так?)
FriendsFoods ff = tom.FriendsFoods.Where(x => x.Food.Name == 'Pizza').Single();
tom.FriendsFoods.Remove(ff);
pizza.FriendsFoods.Remove(ff);
Если я попытаюсь SubmitChanges()
в DataContext, я получаю исключение, потому что он пытается вставить нуль в столбцы Friend
и Food
в таблице FriendsFoods
.
Я уверен, что смогу собрать какую-то запутанную логику для отслеживания изменений в таблице FriendsFoods
, перехвата SubmitChanges()
вызовов и т. Д., Чтобы попытаться заставить это работать так, как я хочу, но есть ли хороший, чистый способ удалить множество Отношения -To-Many с LINQ-To-SQL?
CASCADE
меняется сFriend
наFriendsFoods
и сFood
наFriendsFoods
. Записьtom.FriendsFoods.Remove(ff)
не приведет к удалению ниtom
, ни записиpizza
. 03.04.2010