Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.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_Linq To Sql - Fatal编程技术网

C# “linq到sql”;无法删除尚未附加的实体";

C# “linq到sql”;无法删除尚未附加的实体";,c#,linq,linq-to-sql,C#,Linq,Linq To Sql,当我尝试删除记录时,出现错误无法删除尚未附加的实体。。我在谷歌上搜索过,虽然有很多地方可以找到解决方案来解决这个问题,但建议的解决方案并没有让我走得更远: using (MyDataContext TheDC = new MyDataContext()) { TheDC.MyTable.Attach(ARecord); //added this line but doesn't fix it. TheDC.MyTable.DeleteOnSubmit(ARecord); TheDC.

当我尝试删除记录时,出现错误
无法删除尚未附加的实体。
。我在谷歌上搜索过,虽然有很多地方可以找到解决方案来解决这个问题,但建议的解决方案并没有让我走得更远:

using (MyDataContext TheDC = new MyDataContext())
{
  TheDC.MyTable.Attach(ARecord); //added this line but doesn't fix it.
  TheDC.MyTable.DeleteOnSubmit(ARecord);
  TheDC.SubmitChanges();
我更大的问题是:这个问题是只影响删除查询,还是也影响其他类型的查询?我只是还没有碰到这个问题。我已经编写了一个更新查询,它似乎没有遇到这个错误


谢谢。

请参阅本SO帖子:

…关于附加,如果您已经拥有主键。如果您没有主键,那么我总是先抓取,然后删除,但是,每当我抓取时,我倾向于存储主键以进行更新和删除

它将删除掉主键,但如果你有,那么只需像我下面所做的那样附加并调用delete。我不传递DLINQ所需的对象,因为我希望能够在需要时对其进行更改,因此我传入了另一个用户对象,只需从business类中提取PK并将其放入DAO类中

var db = new MeatRequestDataContext();            
if (input.UserID > 0)
{
     entity = new User()
     {
         UserID = input.UserID
     };
     db.Users.Attach(entity);
     db.Users.DeleteOnSubmit(entity);
 }

对我来说,修复程序只是首先搜索数据库对象

var db = new MeatRequestDataContext();
if (input.UserID > 0)
{
    var existing = db.Users
        .Single(user => user.UserID == input.UserID);

    db.Users.DeleteOnSubmit(existing);
}
在我看来,我只能删除已经存在的内容,所以我需要先从数据库中获取要删除的项目。这也适用于集合和DeleteAllOnSubmit()