我刚刚使用Linq to Sql模型开始了一个新项目,我正在实现我们的第一个多对多关系。我发现这个博客提供了有关如何实现这个的很好的信息:
当我尝试添加一些子对象然后在保存之前删除一个子对象时,我得到一个错误,
System.InvalidOperationException: 无法删除没有的实体 已被附上。
有什么想法吗?有人已经对博客的作者发表了评论,但没有回应。
非常感谢!
答案 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处理多对多关系的方式。每个实体的列表通过多对多关系与另一个实体相关。您可以添加和删除,而不会收到您在此处提到的错误。