Enable-Migrations "Ссылка на объект не установлена ​​для экземпляра объекта"

Я только что создал новую службу фабрики сервисов, которая будет периодически пытаться сохранить некоторые модели в SQL Azure, используя Entity Framework и библиотеку Elastic Client Database. Я пытаюсь смоделировать его как можно ближе к образцу EF клиентской библиотеки эластичного масштабирования SQL Azure (образец EF инструментов Elastic DB Tools). Я нахожусь в точке, где мне нужно включить миграцию, но когда я запускаю Enable-Migrations, я получаю следующее сообщение об ошибке. Я использую параметр ContextTypeName, поскольку он звучит так, как будто это потребуется, если в конечном итоге у меня появятся разные сервисы сервисных структур, нацеленные на одну и ту же базу данных с разными моделями. Какие-либо предложения?

PM> Enable-Migrations -ContextTypeName "ServiceHealth.DbService"
Exception calling "SetData" with "2" argument(s): "Type 'Microsoft.VisualStudio.ProjectSystem.VS.Implementation.Package.Automation.OAProject' in assembly 'Microsoft.VisualStudio.ProjectSystem.VS.Implementation, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' is 
not marked as serializable."
At C:\eNowCloud\eNow.MicroServices\packages\EntityFramework.6.1.3\tools\EntityFramework.psm1:720 char:5
+     $domain.SetData('startUpProject', $startUpProject)
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : SerializationException

System.NullReferenceException: Object reference not set to an instance of an object.
   at System.Data.Entity.Migrations.Extensions.ProjectExtensions.GetProjectTypes(Project project, Int32 shellVersion)
   at System.Data.Entity.Migrations.Extensions.ProjectExtensions.IsWebProject(Project project)
   at System.Data.Entity.Migrations.MigrationsDomainCommand.GetFacade(String configurationTypeName, Boolean useContextWorkingDirectory)
   at System.Data.Entity.Migrations.EnableMigrationsCommand.FindContextToEnable(String contextTypeName)
   at System.Data.Entity.Migrations.EnableMigrationsCommand.<>c__DisplayClass2.<.ctor>b__0()
   at System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(Action command)
Object reference not set to an instance of an object.

1 ответ

Решение

Я решил ту же проблему исключения, указав -StartUpProjectName параметр Enable-Migrations Команда для моей библиотеки.NET Framework с контекстом БД. Проблема может быть в странном запуске проекта - проблема в.IsWebProject() (asp.core в моем случае). См. Более подробный ответ об исключении Enable-Migrations, вызывающем "SetData" с аргументом "2".

Если вы используете Visual Studio 2019, когда вы хотите добавить новую библиотеку классов, вы сталкиваетесь с видом библиотеки классов:

  1. Библиотека классов (.NET Standard)

  2. Библиотека классов (.NET Framework)

Ну, раньше я выбирал номер 1, но теперь я знаю, что допустил ошибку.

Решение состоит в том, чтобы выбрать номер 2.

Вместо того Enable-Migrations Сделай это EntityFrameworkCore\Enable-Migrations

Использовать EntityFrameworkCore\ перед любой командой.

PS: Использование VisualStudio 2019

Другие вопросы по тегам