Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Linq到SQL插入错误_C#_Linq To Sql - Fatal编程技术网

C# Linq到SQL插入错误

C# Linq到SQL插入错误,c#,linq-to-sql,C#,Linq To Sql,已尝试连接或删除 添加一个可能不是新的实体 从另一个地方装载的 数据上下文。这是不受支持的 这是我尝试运行以下程序时收到的错误消息,大致如下: 1 DataContext db = new DataContext(); 2 o = new object(); 3 o.association = db.GetAssociatedObject(pId); 4 db.objects.InsertOnSubmit(o); 5 db.SubmitChanges(); 这段代码创建一个新对象,用现有对象填

已尝试连接或删除 添加一个可能不是新的实体 从另一个地方装载的 数据上下文。这是不受支持的

这是我尝试运行以下程序时收到的错误消息,大致如下:

1 DataContext db = new DataContext();
2 o = new object();
3 o.association = db.GetAssociatedObject(pId);
4 db.objects.InsertOnSubmit(o);
5 db.SubmitChanges();

这段代码创建一个新对象,用现有对象填充关联,然后插入新对象。当我注释掉第3+4行时,错误消失了。错误的原因是什么?我不能对关联对象执行插入吗?

这可能是因为您正在维护o与其关联对象之间的双向关系。当您告诉DataContext插入o时,其关联对象在DataContext的对象跟踪图中复制,一次作为加载,另一次作为o的插入


注释掉第4行应该可以解决这个问题,但是在o和o.association之间留下一个正确的关联

错误消息具有误导性。这有点复杂,但我发现了错误

我有一个方法试图保存分离的对象,并为其创建关联。 此方法创建对象的新附加副本并复制所有成员。然后创建关联

假设我有一个分离的物体。我的方法尝试从数据库中读取它,以便获得它的附加版本。假设这是对象A。A正在使用所有已更改的成员进行更新。 A需要通过称为B:AC的多对多关系获得与C类型对象的关联


我将A的分离副本分配给B。这导致了异常。一旦我指定了A的正确实例,它就起作用了。

当你只注释掉第4行时会发生什么?奇怪的是,当我注释第3行或第4行时会引发相同的异常。我明白你的意思,我也有同样的怀疑,但我很肯定我在其他我没有犯这个错误的地方这样做。否则我将如何为新对象建立外键关系?当然,另一侧的对象是否已经存在。由于我在建立关系之前将其加载到同一个DC中,Linq应该知道它已经存在。这实际上是我正在尝试创建的多对多关联。所以,两个对象都存在,只是需要插入关联。我不清楚这两个对象是否都是暂时的,因为其中一个是新创建的。如果问这样的问题,你应该提供完整的细节,这样人们可以帮助你。