У меня есть отношения многие ко многим между двумя столами, скажем, Друзья и Еда. Если другу нравится еда, я добавляю строку в таблицу FriendsFoods, например:
ID Friend Food
1 'Tom' 'Pizza'
FriendsFoods имеет первичный ключ 'ID' и два ненулевых внешних ключа 'Friend' и 'Food' для таблиц 'Friends' и 'Foods' соответственно.
Теперь предположим, что у меня есть Friend tom
.NET объект, соответствующий 'Tom', и Том больше не любит пиццу (что с ним не так?)
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()
и т. Д., Чтобы попытаться заставить это работать так, как я хочу, но есть ли хороший , чистый способ удалить отношение «многие ко многим» с помощью LINQ-To-SQL?