我有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>
这里完全一样的问题,几个小时以来,很高兴知道不是唯一一个发疯的人!
最后解决:我在程序包管理器控制台中使用EFCore.Tools,而不是dotnet Cli:
//添加迁移
Add-Migration *name* -Project *Library project* -StartupProject *StartUp/Web project*
//更新数据库
Update-Database -Project *Library project* -StartupProject *StartUp/Web project* -verbose
我会朝这个方向……玩得开心!