Сбой Add-Migration Entity Framwork Core - PullRequest
       76

Сбой Add-Migration Entity Framwork Core

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

Я пытаюсь использовать Ef Core в своем проекте.

Структура немного отличается, в том смысле, что я не использую EfCore, например WebApi.csproj.На самом деле у меня есть другая DLL.и DependenciesResolver.dll, который обрабатывает все мои инъекции зависимостей.

В моем EfCore.dll я установил оба

Microsoft.EntityFrameworkCore.Tools

Microsoft.EntityFrameworkCore.SqlServer

Теперь, когда я пытаюсь запустить команду (DLL, в которой я работаю, это EfCore.dll)

Add-Migration Name

Я получаю это:

Произошла ошибка при доступеIWebHost по классу «Программа».Продолжая без поставщика услуг приложения.Ошибка: ссылка на объект не установлена ​​на экземпляр объекта.Невозможно создать объект типа «StoreContext».Добавьте реализацию IDesignTimeDbContextFactory к проекту или посмотрите https://go.microsoft.com/fwlink/?linkid=851728 для дополнительных шаблонов, поддерживаемых во время разработки.

Структура sln выглядит следующим образом

WebApi |EfCore.dll |DependencyResolver.dll и я хочу сохранить его таким образом, я не хочу разрешать использование EfCore в моем WebApi.

Какое разрешение для этой проблемы?

Если это помогает в EfCore.dll У меня есть это.

 public sealed partial class StoreContext : DbContext, IStoreContext
    {
        private string _connectionString;

        public StoreContext(string connectionString) : base()
        {
            _connectionString = connectionString;

            Database.EnsureCreated();
        }

        /// db.tbls
        public DbSet<Order> Orders { get; set; }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.AddOrderConfiguration();
        }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseSqlServer(_connectionString);
        }
    }

, который вызывается DependencyResolver следующим образом

        private DependenciesResolver RegisterInfrastructure()
        {
            _serviceCollection.AddScoped<StoreContext>(factory => new StoreContext(_connectionString));

            return this;
        }

, а затем DependencyResolver вызывается WebApi

1 Ответ

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

Пожалуйста, посмотрите на это: https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/dbcontext-creation

В сообщении об ошибке четко указано, что инструменты EF Core не могут создать экземпляр вашего контекста во время разработки.

Если вы можете определить конструктор без параметров для вашего StoreContext, который будет работать, в противном случае вам нужно указать инструментам, как создать экземпляр вашего контекста во время разработки, определив класс, который реализует интерфейс IDesignTimeDbContextFactory.

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