如何在不同的程序集中使用DBContext时创建迁移

问题描述 投票:0回答:1

我有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)

我也尝试过为迁移创建一个单独的程序集,并在我的App中使用MigrationAssembly扩展名:

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

Tried Structure

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

我不知道该怎么做。我希望能够进行迁移,理想情况下,我希望将其保留在自己的程序集中。目前我根本无法进行。

P.S我还尝试将其添加到我的App csproj文件中:

<GenerateRuntimeConfigurationFiles>True</GenerateRuntimeConfigurationFiles>
msbuild entity-framework-core ef-migrations
1个回答
1
投票

这里完全一样的问题,几个小时以来,很高兴知道不是唯一一个发疯的人!

最后解决:我在程序包管理器控制台中使用EFCore.Tools,而不是dotnet Cli:

//添加迁移

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

//更新数据库

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

我会朝这个方向……玩得开心!

© www.soinside.com 2019 - 2024. All rights reserved.