当DBContext位于不同程序集中时如何创建迁移 [英] How to create migration when DBContext in different assembly

查看:0
本文介绍了当DBContext位于不同程序集中时如何创建迁移的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

我还尝试为迁移创建单独的程序集,并在我的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网站)

这篇关于当DBContext位于不同程序集中时如何创建迁移的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆