Невозможно перенести класс DbContext в Entity Framework Core - PullRequest
0 голосов
/ 16 сентября 2018

Сейчас я занимаюсь разработкой веб-API с использованием основного веб-API ASP.NET.Я впервые использую ядро ​​ASP.NET.Я был разработчиком ASP.NET MVC.Но некоторое время был в отъезде.Сейчас я создаю класс DbContext для Entity Framework с командой переноса.Но я использую три разных проекта для разделения логики.

Это структура моего проекта:

[! [Введите описание изображения здесь] [1]] [1]

Я установил следующие пакеты.

Install-Package Microsoft.EntityFrameworkCore.SqlServer  -Projectname thegoodyard.api
Install-Package Microsoft.EntityFrameworkCore.Tools  -Projectname thegoodyard.api
Install-Package Microsoft.VisualStudio.Web.CodeGeneration.Design  -Projectname thegoodyard.api
Install-Package Microsoft.EntityFrameworkCore.SqlServer  -Projectname thegoodyard.domain
Install-Package Microsoft.EntityFrameworkCore.Tools  -Projectname thegoodyard.domain
Install-Package Microsoft.VisualStudio.Web.CodeGeneration.Design  -Projectname thegoodyard.domain

В проекте thegoodyard.domain я создал класс контекста БД с именем ThegoodyardContext.cs со следующим определением.

namespace thegoodyard.domain.Concrete
{
    public virtual DbSet<Category> Categories { get; set; }

    public partial class ThegoodyardContext: DbContext
    {
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            if(!optionsBuilder.IsConfigured)
            {
                optionsBuilder.UseSqlServer(@"Server=(localdb)\\mssqllocaldb;Database=ThegoodyardContext;Trusted_Connection=True; MultipleActiveResultSets=true");
            }
        }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
        }
    }
}

Затем в *Проект 1016 *, в методе ConfigureServices класса StartUp я зарегистрировал контекст следующим образом:

public void ConfigureServices(IServiceCollection services)
{
     services.AddMvc();

     services.AddDbContext<thegoodyard.domain.Concrete.ThegoodyardContext>(options =>
            options.UseSqlServer(Configuration.GetConnectionString("ThegoodyardContext")));
}

Затем я включил миграцию, выполнив следующую команду

enable-migration -projectname thegoodyard.api

Но сказано, что команда слишком старая, вместо нее используйте add -igration.Я использовал это вместо этого.

add-migration CreateCategory

Затем я получил следующую ошибку

Произошла ошибка при доступе к IWebHost в классе «Программа».Продолжая без поставщика услуг приложения.Ошибка: AddDbContext был вызван с конфигурацией, но тип контекста 'ThegoodyardContext' объявляет только конструктор без параметров.Это означает, что конфигурация, переданная в AddDbContext, никогда не будет использоваться.Если конфигурация передается в AddDbContext, то «ThegoodyardContext» должен объявить конструктор, который принимает DbContextOptions, и передать его базовому конструктору для DbContext.

В сборке «thegoodyard.api» не найден DbContext.Убедитесь, что вы используете правильную сборку и что тип не является ни абстрактным, ни универсальным.

Как это исправить?

1 Ответ

0 голосов
/ 16 сентября 2018

Открыть консоль диспетчера пакетов

Проект по умолчанию: "Выберите имя слоя", например: thegoodyard.domain то

Enable-Migrations

Пожалуйста, проверьте эту ссылку http://www.entityframeworktutorial.net/code-first/code-based-migration-in-code-first.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...