2014-08-27 5 views
0

삭제 기능을 사용하여 행을 삭제하려고하는데 trouhg to gridview 마법사가 제공됩니다. 내가 삭제를 클릭하면하지만 오류 다음 얻을ASP.net gridview를 사용하여 행을 삭제

:

An exception of type 'System.InvalidOperationException' occurred in System.Data.Linq.dll but was not handled in user code 

이 내 코드입니다 :

public void deleteProject(DAL.Project p) 
    { 
     DAL.Project result = (from project in dc.Projects 
           where project.pk_project_id == p.pk_project_id 
           select project).Single(); 
     dc.Projects.DeleteOnSubmit(result); 
     dc.SubmitChanges(); 
    } 

내가 값 "P"디버깅 속성이 없습니다. 이 잘 진행

DAL.Project result = (from project in dc.Projects 
           where project.pk_project_id == p.pk_project_id 
           select project).Single(); 
     result.titel = p.titel; 
     result.beschrijving = p.beschrijving; 

     dc.SubmitChanges(); 

:

이상한 것은 내가 행을 업데이트 할 때 다소 같은 방법을 사용하는 것입니다. 그렇다면 행을 삭제하는 것이 왜 효과가 없습니까?

+0

deleteProject를 호출하기 전에 할당되지 않는 (단, i는 업데이트 작업이 이유를 알고하지 않습니다), 업데이트에 대한 다른 무엇인가 방법? –

+0

nvm 나는 p가 null 인 것을 의미한다고 생각했다 –

+0

실제로 delete 메소드 "p"= null을 호출하지만 update를 호출하면 null이 아니다. 이상한 것은 이것들을 모두 같은 방식으로 부르므로 문제가되어서는 안됩니다. – user683326

답변

1

Enumerable.Single은 시퀀스에 두 개 이상의 항목이 있거나 입력 시퀀스가 ​​비어있는 경우 InvalidOperationException을 던집니다. 당신은 First 또는 FirstOrDefault를 사용할 수 있습니다

DAL.Project result = (from project in dc.Projects 
         where project.pk_project_id == p.pk_project_id 
         select project).FirstOrDefault(); 
if(result != null) 
{ 
    // ... 
} 

이 DAL.Project처럼 보이는

+0

아직 작동하지 않습니다. – user683326