Linq to Sql很多很多关系

时间:2009-07-23 09:16:34

标签: c# .net linq linq-to-sql

我刚刚使用Linq to Sql模型开始了一个新项目,我正在实现我们的第一个多对多关系。我发现这个博客提供了有关如何实现这个的很好的信息:

http://blogs.msdn.com/mitsu/archive/2008/03/19/how-to-implement-a-many-to-many-relationship-using-linq-to-sql-part-ii-add-remove-support.aspx

当我尝试添加一些子对象然后在保存之前删除一个子对象时,我得到一个错误,

  

System.InvalidOperationException:   无法删除没有的实体   已被附上。

有什么想法吗?有人已经对博客的作者发表了评论,但没有回应。

非常感谢!

3 个答案:

答案 0 :(得分:0)

您正在调用未被吸入DataContext的实体上的DeleteOnSubmit。

要检查这一点(以相当粗暴的方式),请执行以下操作:

var e = some_entity;

var cs = dc.GetChangeSet();

if (cs.Inserts.Any( x => x == e))
{
  dc.SomeTable.DeleteOnSubmit(e);
}

dc.SubmitChanges();

答案 1 :(得分:0)

我怀疑这就是为什么作者提到这个特定的帖子在内存中工作而不是linq到sql。另一种方法是修改onAdd事件以将添加的对象插入到上下文中,这至少应该减轻您看到的错误。

答案 2 :(得分:0)

看看PLINQO处理多对多关系的方式。每个实体的列表通过多对多关系与另一个实体相关。您可以添加和删除,而不会收到您在此处提到的错误。