2014-08-27 3 views
0

Я пытаюсь удалить строку с помощью функции удаления, предоставленной trouhg, в gridview wizard.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(); 
    } 

, когда я отладки это значение «р» не имеет свойств.

Самое странное в том, что, когда я хочу, чтобы обновить мои строки я использую несколько тот же метод:

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

это выглядит как DAL.Project не быть назначены перед вызовом deleteProject, что разные об обновлении метод? –

+0

nvm Я думал, что вы имели в виду, что p был null –

+0

Действительно, когда я вызываю метод delete «p» = null, но при вызове обновления он не равен нулю. Странно, что я называю их обоими одинаково, поэтому их не должно быть проблемой. – user683326

ответ

1

Enumerable.Single выбрасывает InvalidOperationException, если sequnce содержит более одного элемента или последовательность ввода пуста. Вы можете использовать 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) 
{ 
    // ... 
} 

(Тем не менее, я не знаю, почему работа обновление)

+0

Он все еще не работает. – user683326

Смежные вопросы