Exclusões de relacionamento LINQ-to-SQL e muitos-para-muitos

Eu tenho um relacionamento muitos-para-muitos entre duas tabelas, digamos Amigos e Alimentos. Se um amigo gosta de comida, coloco uma linha na tabela FriendsFoods, assim:

ID Friend Food
1 'Tom' 'Pizza'

O FriendsFoods tem um 'ID' de Chave Primária e duas chaves estrangeiras não nulas 'Friend' e 'Food' nas tabelas 'Friends' e 'Foods', respectivamente.

Agora, suponha que eu tenho umFriend tom Objeto .NET correspondente a 'Tom', e Tom não gosta mais de pizza (o que há de errado com ele?)

FriendsFoods ff = tom.FriendsFoods.Where(x => x.Food.Name == 'Pizza').Single();
tom.FriendsFoods.Remove(ff);
pizza.FriendsFoods.Remove(ff);

Se eu tentarSubmitChanges() no DataContext, recebo uma exceção porque ele tenta inserir um nulo no diretórioFriend eFood colunas noFriendsFoods mesa.

Tenho certeza de que posso montar algum tipo de lógica complicada para rastrear alterações noFriendsFoods mesa, interceptarSubmitChanges() chamadas, etc, para tentar fazer com que isso funcione da maneira que eu quero, mas existe uma maneira agradável e limpa de remover um relacionamento Muitos-para-Muitos com o LINQ-To-SQL?

questionAnswers(3)

yourAnswerToTheQuestion