当DBContext位于不同程序集中时如何创建迁移不同、程序、DBContext

由网友(嘻哈风格)分享简介:我有NET Core 3.1个应用程序,我的[models,dbcontext,application]都在它们自己的程序集中。我正在尝试为该应用程序发出迁移。我一直收到此错误:$ dotnet ef migrations add InitialCreate --project DataAccess MSBUILD:错...

我有NET Core 3.1个应用程序,我的[models,dbcontext,application]都在它们自己的程序集中。我正在尝试为该应用程序发出迁移。我一直收到此错误:

$ dotnet ef migrations add InitialCreate --project DataAccess 
MSBUILD:错误MSB1009:项目文件不存在。交换机: DataAccess无法检索项目元数据。确保这是一个 基于MSBuild的.NET核心项目。如果您使用的是自定义 BaseIntermediateOutputPath或MSBuildProjectExtensionsPath值,请使用 --msBuildproject扩展路径选项。

当前结构

*root
  -App  (.NET Core 3.1)
  -DataAccess  (.NET Standard 2.1)   (Contains the DBContext)
  -Models     (.NET Standard 2.1)   (contains models)
为什么你需要将代码迁移到ASP.NET Core 2.0

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

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)

我不知道该如何执行此操作。我希望能够进行迁移,理想情况下,我希望将它们保留在它们自己的程序集中。目前,我根本不能执行这些操作。

P.S我也尝试将此文件添加到我的Appcsproj文件:

<GenerateRuntimeConfigurationFiles>True</GenerateRuntimeConfigurationFiles>

推荐答案

上面@ajay给出的答案,经过日复一日的谷歌搜索,终于对我起作用了:

要在--project参数中插入迁移程序集的完整路径,如下所示:

dotnet ef migrations add Mymigration --project "c:eposmyprojectData" 
...并且您应该从主启动项目(如c:Eposmyproject网站)

阅读全文

相关推荐

最新文章