Задать вопрос
@JuniorNoobie
Сижу в поддержке, пишу мелкие проекты

Как удалить элемент из DbContext Entity Framework?

Добрый день!
Подскажите как исправить следующую ситуацию. Есть BookContext db (DbContext), который уже соединен с одноименной таблицей в БД Oracle. Новые записи из кода добавляются прекрасно, т.е. строчка
db.Books.Add(new Book { Name = "First step", Author = "shavadre", Price = 120 })

работает прекрасно. Проблемы начинаются когда я пытаюсь удалить запись из контекста и, соответственно, из БД.
Book delBook = db.Books.Where(x => x.Id == 2).FirstOrDefault();
            db.Books.Remove(delBook);
            db.SaveChanges();

Выскакивает ошибка:
The specified value is not an instance of type 'Edm.Decimal'
Parameter name: value

Код класса и контекста:
[Table("BOOKS",Schema="VRSHAIKHISLAMOV")]
    public class Book
    {
        [Column("ID", TypeName="NUMBER")]
        [Required]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int Id { get; set; }
        
        [Column("NAME", TypeName="VARCHAR2")]
        public string Name { get; set; }

        [Column("AUTHOR", TypeName = "VARCHAR2")]
        public string Author { get; set; }

        [Column("PRICE", TypeName = "NUMBER")]
        public int Price { get; set; }
    }

public class BookContext : DbContext
    {
        public DbSet<Book> Books { get; set; }
    }
  • Вопрос задан
  • 863 просмотра
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • OTUS
    C# Developer. Professional
    6 месяцев
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 1
    1 неделя
    Далее
  • Software-testing.ru
    Программирование на C# для тестировщиков
    10 недель
    Далее
Решения вопроса 1
@dmitryKovalskiy
программист средней руки
Попробуйте 2M вместо 2
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
NYMEZIDE
@NYMEZIDE
резюме - ivanfilatov.ru
Book delBook = db.Books.Where(x => x.Id == 2).FirstOrDefault();


Find почему не используете для ключа Id?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы