我使用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会尖叫并显示错误:无法删除尚未连接的实体。我究竟做错了什么?任何人吗?
答案 0 :(得分:2)
尝试db.PatientFiles.Attach(patfile)
或尝试仅使用一个全球 HMSDataContext
答案 1 :(得分:2)
我提出了一个解决方案!我查询了数据上下文对象,以检索具有与从同一数据上下文中删除的ID相同的id的对象。
var delpatfile = db.PatientFiles.SingleOrDefault(p => p.Id == patfile.Id);
db.PatientFiles.DeleteOnSubmit(delpatfile);
db.SubmitChanges();
由于它来自相同的数据上下文,因此它已被附加。我想这可能不是解决这个问题的唯一方法,所以如果有人还有答案,请随时发帖。
感谢。