当DBContext位于不同程序集中时如何创建迁移 [英] How to create migration when DBContext in different assembly
本文介绍了当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
我也尝试将此文件添加到我的App
csproj文件:
<GenerateRuntimeConfigurationFiles>True</GenerateRuntimeConfigurationFiles>
推荐答案
上面@ajay给出的答案,经过日复一日的谷歌搜索,终于对我起作用了:
要在--project参数中插入迁移程序集的完整路径,如下所示:
dotnet ef migrations add Mymigration --project "c:
eposmyprojectData"
...并且您应该从主启动项目(如c:
Eposmyproject网站)
这篇关于当DBContext位于不同程序集中时如何创建迁移的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文