Msbuild 如何在DBContext位于不同程序集中时创建迁移
我有Msbuild 如何在DBContext位于不同程序集中时创建迁移,msbuild,entity-framework-core,entity-framework-migrations,Msbuild,Entity Framework Core,Entity Framework Migrations,我有NET Core 3.1应用程序,其中我的[模型、dbcontext、应用程序]都在各自的程序集中。我正在尝试为该应用程序发布迁移。我不断收到以下错误: $ dotnet ef migrations add InitialCreate --project DataAccess MSBUILD:错误MSB1009:项目文件不存在。开关: DataAccess无法检索项目元数据。确保它是一个 基于MSBuild的.NET核心项目。如果您使用自定义 BaseMediateOutputPath或
NET Core 3.1
应用程序,其中我的[模型、dbcontext、应用程序]
都在各自的程序集中。我正在尝试为该应用程序发布迁移。我不断收到以下错误:
$ dotnet ef migrations add InitialCreate --project DataAccess
MSBUILD:错误MSB1009:项目文件不存在。开关:
DataAccess无法检索项目元数据。确保它是一个
基于MSBuild的.NET核心项目。如果您使用自定义
BaseMediateOutputPath或MSBuildProjectExtensionsPath值,请使用
--msbuildprojectextensionspath选项
当前结构
*root
-App (.NET Core 3.1)
-DataAccess (.NET Standard 2.1) (Contains the DBContext)
-Models (.NET Standard 2.1) (contains models)
*root
-App
-Migrations (.NET Standard 2.1)
-DataAccess (.NET Standard 2.1)
-Models (.NET Standard 2.1)
我还尝试为迁移创建单独的程序集,并在我的应用程序中使用MigrationAssembly扩展:
services.AddDbContext<[some DBContext]>(x => x.UseSqlServer([some string],x=>x.MigrationsAssembly("Migrations")));
我不明白该如何做。我希望能够进行迁移,理想情况下,我希望将它们保留在自己的程序集中。目前我根本无法进行迁移
p.S
我还尝试将此添加到我的应用程序csproj文件中:
<GenerateRuntimeConfigurationFiles>True</GenerateRuntimeConfigurationFiles>
True
几个小时以来,这里的问题完全相同,很高兴知道不是唯一一个疯狂的人
终于解决了:
我在Package Manager控制台中使用的是EFCore.Tools,而不是dotnet Cli:
//添加迁移
Add-Migration *name* -Project *Library project* -StartupProject *StartUp/Web project*
//更新数据库
Update-Database -Project *Library project* -StartupProject *StartUp/Web project* -verbose
我会朝这个方向走。。。玩得开心 几个小时以来,这里的问题完全相同,很高兴知道不是唯一一个疯狂的人
终于解决了:
我在Package Manager控制台中使用的是EFCore.Tools,而不是dotnet Cli:
//添加迁移
Add-Migration *name* -Project *Library project* -StartupProject *StartUp/Web project*
//更新数据库
Update-Database -Project *Library project* -StartupProject *StartUp/Web project* -verbose
我会朝这个方向走。。。玩得开心 经过数天的谷歌搜索,上面@Ajay给出的答案终于对我有用了:
要在--project参数中插入迁移程序集完整路径,请执行以下操作:
dotnet ef migrations add Mymigration --project "c:\repos\myproject\Data"
…您应该在主启动项目(如c:\repos\myproject\Web)中执行此命令。经过数天的谷歌搜索,上面@Ajay给出的答案终于对我有用了:
要在--project参数中插入迁移程序集完整路径,请执行以下操作:
dotnet ef migrations add Mymigration --project "c:\repos\myproject\Data"
…您应该在主启动项目(如c:\repos\myproject\Web)中执行此命令。在下面相同的项目结构中,此命令对我有效。CLI在App folder App>dotnet ef migrations中打开添加您的_migrationName--project“迁移程序集的绝对路径(c:/root/migrations)”答案如下。在下面相同的项目结构中,命令为我工作。CLI在App folder App>dotnet ef migrations中打开添加您的_migrationName--project“迁移程序集的绝对路径(c:/root/migrations)”答案如下。