Я использую Visual Studio 2008 с .NET Framework 3.5.
Я пытаюсь сделать то, что, как я думал, будет простым удалением некоторых строк с использованием LINQ для сущностей.
Iу меня есть простая база данных базы данных SQL Server, и я использую Data Entity Framework для доступа к ней.Я ничего не сделал с поведением по умолчанию, созданным в EDMX.
Я пытаюсь следующий код:
myDB.Dispose();
myDB = new EChODatabaseConnection();
//get our equipment list of requested equipment
var OldEquip = from u in myDB.dbEquipmentRequestedSet
where u.iRequestID == requestID
select u;
myDB.DeleteObject(OldEquip);
myDB.SaveChanges();
Он попадает в db.DeleteObject (OldEquip) и генерирует следующую ошибку:
"Невозможно удалить объект, поскольку он не был найден в ObjectStateManager."
Я проверил, что в OldEquip что-то есть, прежде чем строка кода будетВыполнено.
Я добавил первые две строки кода (Dispose и new) на случай, если возникла проблема с предыдущим кодом.
EDIT dbEquipmentRequestedSet выглядит такthis:
iRequestID (in db an int)
sCode (in db a varchar(50))
SCodePrefix (in db a varchar(10))
Я использую составной первичный ключ на основе iRequestID и sCode.
EDIT2 Чтобы выяснить, почти во всех случаях, запрос OldEquip приведет кболее одного результата.
Из ответов на данный момент видно, что мне придется вручную проходить каждую запись для удаления.
Есть ли более элегантное решение?Может быть, с помощью хранимой процедуры?