1

我使用 LINQ 的场景如下:我有一个方法,使用以下代码查询一个表并返回一条记录

private L2SQLData.PatientFile getpatfile(long id)
{
   var db = new HMSDataContext();
   var patfile = 
   (from f in db.PatientFiles.Where(f=> f.Id == id) select   f).FirstOrDefault() ;

   return patfile;
}

然后另一个代码调用上面的方法并获取返回的对象/记录。然后从同一个表中删除它,如下所示:

L2SQLData.PatientFile patfile = getpatfile(long.Parse(id));

var db = new HMSDataContext();
db.PatientFiles.DeleteOnSubmit(patfile);
db.SubmitChanges();

运行时,VS2010 发出错误提示:无法删除尚未附加的实体。我究竟做错了什么?任何人?

4

2 回答 2

2

尝试db.PatientFiles.Attach(patfile)或尝试仅使用一个全局 HMSDataContext

于 2012-06-26T10:33:27.807 回答
2

我想出了一个解决方案!我查询数据上下文对象以检索与返回的对象具有相同 id 的对象,然后从相同的数据上下文中删除。

var delpatfile = db.PatientFiles.SingleOrDefault(p => p.Id == patfile.Id);
                 db.PatientFiles.DeleteOnSubmit(delpatfile);
                 db.SubmitChanges();

由于它来自相同的数据上下文,因此它已经附加。我想这可能不是解决这个问题的唯一方法,所以如果有人仍然有答案,请随时发布。

谢谢。

于 2012-06-26T11:06:04.923 回答