Установлено внедрение зависимостей в консольном приложении .NET Core для ошибки службы EF Core DbContext.C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Установлено внедрение зависимостей в консольном приложении .NET Core для ошибки службы EF Core DbContext.

Сообщение Anonymous »


Я создал консольное приложение .net Core и добавил следующий пакет внедрения зависимостей:

Microsoft.Extensions.DependencyInjection

Чтобы внедрить службу EF Core DbContext, вот фрагмент кода проекта:

static void Main(string[] args) { // Создаём коллекцию сервисов и настраиваем наши сервисы вар услуги = ConfigurationServices(); // Генерируем провайдера вар serviceProvider = Services.BuildServiceProvider(); // Начинаем наш настоящий код serviceProvider.GetService().Run(); } общедоступная статическая IConfiguration LoadConfiguration() { вар строитель = новый ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json", необязательно: false, reloadOnChange: true) .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Производство"}.json", необязательно: true) .AddEnvironmentVariables(); вернуть строитель.Build(); } частный статический IServiceCollection ConfigurationServices() { Услуги IServiceCollection = новый ServiceCollection(); // Настраиваем объекты, которые нам нужны, чтобы попасть в настройки конфигурации конфигурация вар = LoadConfiguration(); // ВАЖНЫЙ! Зарегистрируйте наш файл cvonfig, строку подключения к базе данных и точку входа приложения (запуск) услуги .AddSingleton(конфигурация) .AddConnection(конфигурация) .AddStartup(); услуги возврата; } КЛАСС пула услуг:

общедоступный статический класс ServicesPool { общедоступный статический IServiceCollection AddStartup (это службы IServiceCollection) { Services.AddTransient(); услуги возврата; } общедоступный статический IServiceCollection AddConfiggguration (это службы IServiceCollection, конфигурация IConfiguration) { Services.AddSingleton(конфигурация); услуги возврата; } общедоступный статический IServiceCollection AddConnection (это службы IServiceCollection, конфигурация IConfiguration) { var Connection = Configuration.GetConnectionString("DEV_CS"); Services.AddDbContext(параметры => options.UseSqlServer(connection, b => b.MigrationsAssembly("migration.presentence"))); услуги возврата; } } Служба MigrationDbContext, реализующая DbContext из EntityFramwork Core:

публичный класс MigrationDbContext: DbContext { public MigrationDbContext(DbContextOptions dbContextOptions): база(dbContextOptions) { } общественный DbSet RootItems {get; набор; } } Приложение работает без проблем, но когда я пытаюсь создать первоначальную миграцию с помощью следующей команды:

Добавить миграцию «Начальная»

Произошла ошибка со следующим сообщением:

Невозможно создать объект типа «MigrationDbContext». Для различные шаблоны, поддерживаемые во время разработки, см. https://go.microsoft.com/fwlink/?linkid=851728

Я изучал проблему и пробовал несколько решений, но пока не смог ее решить. Поэтому я собираюсь поделиться трассировкой стека ошибки, надеясь получить от вас помощь!

Трассировка стека:

PM> Добавить-Миграция «Начальная» -verbos Использование проекта 'миграция.присутствие'. Использование стартап-проекта «e-commerce.migration». Сборка началась... Сборка выполнена успешно. C:\Program Files\dotnet\dotnet.exe exec --depsfile C:\dev\backlogheros\e-commerce.migration\e-commerce.migration\bin\Debug\netcoreapp5.0\e-commerce.migration.deps.json --additionalprobingpath C:\Users\yousi.nuget\packages --runtimeconfig C:\dev\backlogheros\e-commerce.migration\e-commerce.migration\bin\Debug\netcoreapp5.0\e-commerce.migration.runtimeconfig .json C:\Users\yousi.nuget\packages\microsoft.entityframeworkcore.tools\5.0.1\tools\netcoreapp2.0\any\ef.dll миграции добавляют Начальный --json --verbose --no-color --prefix-output --assembly C:\dev\backlogheros\e-commerce.migration\e-commerce.migration\bin\Debug\netcoreapp5.0\migration.presentence.dll --startup-assembly C:\dev\backlogheros\e-commerce.migration\e-commerce.migration\bin\Debug\netcoreapp5.0\e-commerce.migration.dll --project-dir C:\dev\backlogheros\e-commerce.migration\migration.presentence
--language C# --working-dir C:\dev\backlogheros\e-commerce.migration --root-namespacemigration.presentence Использование сборки "migration.presentence". Использование стартовой сборки «электронная коммерция.миграция». Использование базы приложений 'C:\dev\backlogheros\e-commerce.migration\e-commerce.migration\bin\Debug\netcoreapp5.0'. Использование рабочего каталога 'C:\dev\backlogheros\e-commerce.migration\e-commerce.migration'. С использованием корневое пространство имен «миграция.презентация». Использование каталога проекта «C:\dev\backlogheros\e-commerce.migration\migration.presentence». Остальные аргументы: . Поиск классов DbContext... Поиск Реализации IDesignTimeDbContextFactory... Поиск приложения поставщик услуг в сборке «e-commerce.migration»... Поиск Поставщик услуг Microsoft.Extensions.Hosting... Нет статического метода «CreateHostBuilder(string[])» найден в классе «Программа». Нет Был найден поставщик услуг приложений. Поиск классов DbContext в проект... Найден DbContext «MigrationDbContext». Microsoft.EntityFrameworkCore.Design.OperationException: невозможно создайте объект типа «MigrationDbContext». Для разных шаблоны, поддерживаемые во время разработки, см. https://go.microsoft.com/fwlink/?linkid=851728 ---> System.InvalidOperationException: невозможно разрешить службу для типа «Microsoft.EntityFrameworkCore.DbContextOptions» при попытке активируйте «migration.presentence.MigrationDbContext».
в Microsoft.Extensions.DependencyInjection.ActivatorUtilities.ConstructorMatcher.CreateInstance (поставщик IServiceProvider) в Microsoft.Extensions.DependencyInjection.ActivatorUtilities.CreateInstance (поставщик IServiceProvider, тип экземпляраType, параметры Object[]) в Microsoft.Extensions.DependencyInjection.ActivatorUtilities.GetServiceOrCreateInstance (поставщик IServiceProvider, тип типа) в Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.c__DisplayClass13_4.b__13() --- Конец внутренней трассировки стека исключений --- в Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.c__DisplayClass13_4.b__13() в Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.CreateContext (фабрика Func`1) в Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.CreateContext(String contextType) в Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.AddMigration (имя строки, String outputDir, String contextType, String namespace) в Microsoft.EntityFrameworkCore.Design.OperationExecutor.AddMigrationImpl (имя строки, String outputDir, String contextType, String namespace) в Microsoft.EntityFrameworkCore.Design.OperationExecutor.AddMigration.c__DisplayClass0_0.b__0() в Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.c__DisplayClass3_0`1.b__0() в Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute (Действие-действие)
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»