Как создать миграцию, когда DBContext в другой сборке - PullRequest
0 голосов
/ 09 марта 2020

У меня есть NET Core 3.1 приложение, в котором все мои [models,dbcontext,application] находятся в своих сборках. Я пытаюсь выполнить миграцию (и) для приложения. Я получаю эту ошибку:

$ dotnet ef migrations add InitialCreate --project DataAccess 

MSBUILD: ошибка MSB1009: файл проекта не существует. Переключатель: DataAccess Невозможно получить метаданные проекта. Убедитесь, что это основанный на MSBuild проект NET Core. Если вы используете пользовательские значения BaseIntermediateOutputPath или MSBuildProjectExtensionsPath, используйте параметр --msbuildprojectextensionspath.

Текущая структура

*root
  -App  (.NET Core 3.1)
  -DataAccess  (.NET Standard 2.1)   (Contains the DBContext)
  -Models     (.NET Standard 2.1)   (contains models)

Я также попытался создать отдельную сборку для миграций и используйте расширение MigrationAssembly в моем App:

services.AddDbContext<[some DBContext]>(x => x.UseSqlServer([some string],x=>x.MigrationsAssembly("Migrations")));

Пробная структура

 *root
      -App
      -Migrations (.NET Standard 2.1)
      -DataAccess (.NET Standard 2.1)
      -Models (.NET Standard 2.1)

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

PS
У меня есть также попытался добавить это в мой App csproj файл:

<GenerateRuntimeConfigurationFiles>True</GenerateRuntimeConfigurationFiles>

1 Ответ

1 голос
/ 13 марта 2020

точно такая же проблема здесь, так как часы, приятно знать, что не единственный, кто сходит с ума!

Наконец-то все решилось: я использую EFCore.Tools в Package Manager Console вместо do tnet Cli:

// Добавить миграцию

Add-Migration *name* -Project *Library project* -StartupProject *StartUp/Web project*

// Обновить базу данных

Update-Database -Project *Library project* -StartupProject *StartUp/Web project* -verbose

Я бы go в этом направлении ... весело провести время!

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