LINQ-to-SQL y eliminaciones de relaciones de muchos a muchos

Tengo una relación de muchos a muchos entre dos mesas, digamos Friends and Foods. Si a un amigo le gusta una comida, pego una fila en la mesa de FriendsFoods, así:

ID Friend Food
1 'Tom' 'Pizza'

FriendsFoods tiene una 'ID' de clave principal y dos claves externas no nulas 'Friend' y 'Food' para las tablas 'Friends' y 'Foods', respectivamente.

Ahora supongamos que tengo unFriend tom Objeto .NET correspondiente a 'Tom', y a Tom ya no le gusta la pizza (¿qué le pasa?)

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

Si trato deSubmitChanges() en el DataContext, obtengo una excepción porque intenta insertar un valor nulo en elFriend yFood columnas en elFriendsFoods mesa.

Estoy seguro de que puedo armar algún tipo de lógica enrevesada para rastrear los cambios en elFriendsFoods mesa, interceptarSubmitChanges() llamadas, etc. para intentar que esto funcione de la manera que quiero, pero ¿existe una forma limpia y agradable de eliminar una relación de Muchos a Muchos con LINQ-To-SQL?

Respuestas a la pregunta(3)

Su respuesta a la pregunta