【发布时间】:2010-04-02 20:47:17
【问题描述】:
我在两张表之间有一个多对多的关系,比如说 Friends 和 Foods。如果朋友喜欢某种食物,我会在 FriendsFoods 表中添加一行,如下所示:
ID Friend Food
1 'Tom' 'Pizza'
FriendsFoods 有一个主键“ID”,两个非空外键“Friend”和“Food”分别指向“Friends”和“Foods”表。
现在假设我有一个对应于“Tom”的Friend tom.NET 对象,而Tom 不再喜欢披萨(他怎么了?)
FriendsFoods ff = tom.FriendsFoods.Where(x => x.Food.Name == 'Pizza').Single();
tom.FriendsFoods.Remove(ff);
pizza.FriendsFoods.Remove(ff);
如果我尝试在 DataContext 上使用 SubmitChanges(),我会收到异常,因为它会尝试将 null 插入到 FriendsFoods 表中的 Friend 和 Food 列中。
我确信我可以组合一些复杂的逻辑来跟踪FriendsFoods 表的更改,拦截SubmitChanges() 调用等,以尝试让它按照我想要的方式工作,但是有没有一个不错的,用 LINQ-To-SQL 删除多对多关系的干净方法?
【问题讨论】:
标签: c# linq-to-sql