Linq Cannot remove an entity that has not been attached错误解决方法(转)

在做ling操作时遇到如下错误:

Cannot remove an entity that has not been attached

我的错误之处在于在同一个方法中,查询和删除使用不同的Data context。

错误代码如下:

protected  DataClassesDataContext DB  
{  
     
get  
     {  
         
return new DataClassesDataContext();  
     }  
 }  
   
 
private void DeleteOGU(int Id)  
 {  
     var ogu 
= DB.OGUs.FirstOrDefault(x => x.OGU_SysID == Id);  
   
     DB.OGUs.DeleteOnSubmit(ogu);  
   
     DB.SubmitChanges();  
   
     BindData();  
 }  


在Delete方法中,DB每次都是一个新的实例,所以DeleteOnSubmit的参数ogu其实和方法所在的data context并不在同一个对象中,也就出现如标题所示的错误。

 现将DB属性去掉,把它移入Delete方法中。

 private void DeleteOGU(int Id)  
 {  
     var DB 
= new DataClassesDataContext();   
   
     var ogu 
= DB.OGUs.FirstOrDefault(x => x.OGU_SysID == Id);  
   
     DB.OGUs.DeleteOnSubmit(ogu);  
   
     DB.SubmitChanges();  
   
     BindData();  
 }  


此时方法中的所有DB都指向同一个对象,错误自然被排除。

转自:http://blog.csdn.net/duwa789/archive/2010/05/06/5563714.aspx

原文地址:https://www.cnblogs.com/scottckt/p/1879755.html