Может быть, вам стоит просто попробовать:
cntx.DeleteObject(cntx.Producers.where(x => x.ID == item.ID));
// if you get my .where() code to return the entity's index you'll should be fine
Это должно вызвать соответствующую лямбду / linq.
Поскольку вы используете «where
», выражение применяется к каждому «Producer» -Entity x
, соответствующему item.ID
UPDATE:
Из MSDN:
Удаляет запись по указанному индексу из источника данных.
DeleteObject(int rowIndex)
Ну, это многое объясняет. Потому что это означает, что вы просто передаете неверный аргумент.
Вам необходимо перебрать всю Grid с помощью foreach или for и удалить каждую сущность с помощью deleteObject и проверить, прежде чем идентификатор объекта соответствует item.ID.
Я уверен, что это будет проще, если использовать Lambda / LINQ, но в настоящее время я понятия не имею, как это можно сделать иначе.
Я также нашел это довольно интересным, вам нужно прокрутить вниз, чтобы «удалить», пример для базы данных, но все еще использует сетку в качестве буфера, поэтому это должно быть похожей проблемой.
http://www.asp.net -crawler.com / статьи / LINQ / Insert-получить-обновление-удаление-через-GridView-используя-LINQ к SQL.aspx