Мой контекст не наследуется от DbContext в Entity Framework Core

Я пытаюсь сохранить файл BooksContext.cs в папке Contexts.

У меня есть один класс Book внутри папки Entities. Следовательно, ниже приведен код в файле BookContext.cs.

Я использовал следующую команду в консоли диспетчера пакетов, чтобы включить миграцию.

PM>Enable-Migrations -ContextTypeName Books.API.Contexts.BooksContext

Но я получаю следующую ошибку: Тип BooksContext не наследуется от DbContext. Для свойства DbMigrationsConfiguration.ContextType должен быть задан тип, наследуемый от DbContext.

После ошибки я не уверен, где и как установить свойство DbMigrationsConfiguration.ContextType

Я не мог получить большую помощь от Google, и я не уверен, что мне не хватает. Кто-нибудь может мне помочь, пожалуйста!

namespace Books.API.Contexts
{
    public class BooksContext : DbContext
    {
        public DbSet<Book> Books { get; set; }

        public BooksContext(DbContextOptions<BooksContext> options)
            : base(options)
        {
            // Tried the accepted answer from below URL, but did not work
            // https://stackoverflow.com/questions/41829229/how-do-i-implement-dbcontext-inheritance-for-multiple-databases-in-ef7-net-co
        }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<Author>().HasData(
                new Author
                {
                    Id = Guid.Parse("e4da4ec7-0fe1-46d8-a133-4374ccd54df9"),
                    FirstName = "George",
                    LastName = "RR Martin"
                },
                new Author
                {
                    Id = Guid.Parse("5afd341b-95df-427a-80df-3ed0995a5da6"),
                    FirstName = "Stephen",
                    LastName = "Fry"
                },
                new Author
                {
                    Id = Guid.Parse("4c8bd0d6-14b1-4284-9be1-1cb78c9fc871"),
                    FirstName = "James",
                    LastName = "Elroy"
                },
                new Author
                {
                    Id = Guid.Parse("fc433048-0153-4230-a15b-df1808de27d6"),
                    FirstName = "Douglass",
                    LastName = "Adams"
                }
            );

            modelBuilder.Entity<Book>().HasData(
                new Book
                {
                    Id = Guid.Parse("92f5d8a9-0141-4bbc-8ee1-61ecdab16cda"),
                    AuthorId = Guid.Parse("e4da4ec7-0fe1-46d8-a133-4374ccd54df9"),
                    Title = "The Winds of Winter",
                    Description = "The book that seems like impossible to write."
                },
                new Book
                {
                    Id = Guid.Parse("1c4ea7c7-f410-4173-b6bd-900f0dd95472"),
                    AuthorId = Guid.Parse("5afd341b-95df-427a-80df-3ed0995a5da6"),
                    Title = "A Game of Throws",
                    Description = "First novel in a song of Ice and Fire"
                },
                new Book
                {
                    Id = Guid.Parse("fd15e575-3d0c-4b92-9b40-63d0f7d58108"),
                    AuthorId = Guid.Parse("4c8bd0d6-14b1-4284-9be1-1cb78c9fc871"),
                    Title = "Mythos",
                    Description = "The Greek myths are amongst the best stories ever told"
                },
                new Book
                {
                    Id = Guid.Parse("d544691c-1a10-4dcd-853a-f7bbd90543ff"),
                    AuthorId = Guid.Parse("fc433048-0153-4230-a15b-df1808de27d6"),
                    Title = "American Tabloid",
                    Description = "It is a 1995 novel"
                }
            );
            base.OnModelCreating(modelBuilder);
        }
    }
}

person Ashok kumar    schedule 30.10.2019    source источник
comment
У вас есть собственный класс DbContext, который скрывает DbContext EF?   -  person Fildor    schedule 30.10.2019
comment
Нет, у меня нет собственного класса DbContext, чтобы скрыть DbContext EF. Все, что я пытаюсь, это создать класс BooksContext внутри папки Contexts.   -  person Ashok kumar    schedule 30.10.2019
comment
Может быть, я что-то упускаю, но я не вижу явной ошибки в этом коде. Я бы сказал, что он действительно наследует DbContext. Вы пытались очистить и восстановить решение?   -  person Fildor    schedule 30.10.2019
comment
Enable-Migration — это команда EF6, которая не требуется в EF Core. См. справочник по основным инструментам Entity Framework — консоль диспетчера пакетов в Visual Studio как установить и использовать команды EF Core PMC.   -  person Ivan Stoev    schedule 30.10.2019
comment
@Fildor: извините за поздний ответ. Да, пробовал все доступные варианты, но блокировки нет. Я сомневаюсь, что: поскольку я создал класс DbContext внутри папки Contexts, эта проблема.   -  person Ashok kumar    schedule 30.10.2019
comment
@Ashokkumar Ашоккумар, я упустил из виду, что ты на ядре dtonet. Я думаю, Иван что-то задумал.   -  person Fildor    schedule 30.10.2019


Ответы (1)


Небольшая ошибка, но хорошая учеба для меня после того, как я потратил более одного дня мучительных усилий. Я надеюсь, что это будет хорошим уроком и для других.

Я добавил два пакета NuGet: EntityFramework и Microsoft.EntityFrameworkCore, что является моей ошибкой.

Простое добавление пакета NuGet для Microsoft.EntityFrameworkCore сделает всю необходимую работу.

person Ashok kumar    schedule 01.11.2019
comment
Не мой опыт. Как только я удаляю EntityFramework из NuGet, я начинаю получать другие ошибки... Ваш целевой проект MyProject не ссылается на EntityFramework. - person smatthews1999; 13.12.2020
comment
У вас должна быть одна ссылка, то есть либо EnitityFramework, либо Microsoft.EntityFrameworkCore. В вашей ошибке указано, что ваш целевой проект «MyProject» не ссылается на EntityFramework. - person Ashok kumar; 13.12.2020
comment
У меня был Microsoft.EntityFrameworkCore, и я получил ошибки. Затем я удалил все ссылки на EF и добавил их обратно, убедившись, что мой проект выбран. Потом все заработало. Я вызываю ошибки на Microsoft. - person smatthews1999; 14.12.2020
comment
Извините, но я не мог понять часть вашего утверждения. Что вы имеете в виду под «я называю ошибки в Microsoft»? - person Ashok kumar; 14.12.2020