Подтвердить что ты не робот

Удаление элемента с помощью сущности

Я пытаюсь удалить объект с помощью Entity Framework и во всех обучающих программах в Интернете, я обнаружил, что для этого вам нужно вызвать метод DeleteObject в контексте. Я попытался это сделать, но, похоже, у меня нет методов DeleteObject.

Вот мой код:

public void DeleteBook(int bookId)
    {
        Book book = (Book)bookContext.Books.Where(b => b.Id == bookId).First();
        bookContext.DeleteObject(book);
    }

Это ошибка, которую я получаю:

'DataAccess.Models.BooksEntities' не содержит определения для 'DeleteObject' и не используется метод расширения 'DeleteObject', принимающий первый аргумент типа 'DataAccess.Models.BooksEntities' (вам не хватает директивы using или ссылка на сборку?)

Что я делаю неправильно?

4b9b3361

Ответ 1

Используете ли вы DbContext или ObjectContext? Если у вас есть DbContext, вам нужно использовать функцию Удалить:

public void DeleteBook(int bookId)
    {
        Book book = (Book)bookContext.Books.Where(b => b.Id == bookId).First();
        bookContext.Books.Remove(book);
    }

Ответ 2

Возможные решения по удалению объекта без его извлечения путем изменения состояния

DbContext имеет методы, называемые Entry и Entry, эти методы получают DbEntityEntry для данного объекта и предоставляют доступ к информации о сущности и возвращают объект DbEntityEntry, способный выполнять действие над объектом. Теперь мы можем выполнить операцию удаления в контексте, просто изменив состояние объекта на EntityState.Deleted.

 using (Entities Context = new Entities())  
 {  
    Book  deptBook  = new Book  { Id  = bookId };  
    Context.Entry(deptBook).State = EntityState.Deleted;  
    Context.SaveChanges();  
 }