【问题标题】:How to create migration when DBContext in different assemblyDBContext在不同程序集中时如何创建迁移
【发布时间】:2020-06-21 05:04:20
【问题描述】:

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

尝试过的结构

 *root
      -App
      -Migrations (.NET Standard 2.1)
      -DataAccess (.NET Standard 2.1)
      -Models (.NET Standard 2.1)

我不明白该怎么做。我希望能够进行迁移,理想情况下我希望将它们保留在自己的程序集中。目前我根本无法做到。

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

<GenerateRuntimeConfigurationFiles>True</GenerateRuntimeConfigurationFiles>

【问题讨论】:

  • 在相同的项目结构中,下面的命令对我有用。 CLI 在 App 文件夹中打开 App> dotnet ef migrations add your_migrationName --project "Absolute path to your migration assembly (c:/root/migrations)"
  • 如果对您有帮助,您介意将其中一个答案标记为已接受吗?

标签: msbuild entity-framework-core entity-framework-migrations


【解决方案1】:

这里完全相同的问题,因为几个小时,很高兴知道不是唯一一个疯狂的人!

终于解决了: 我在包管理器控制台中使用 EFCore.Tools 而不是 dotnet Cli:

//添加迁移

Add-Migration *name* -Project *Library project* -StartupProject *StartUp/Web project*

//更新数据库

Update-Database -Project *Library project* -StartupProject *StartUp/Web project* -verbose

我会朝这个方向走……玩得开心!

【讨论】:

    【解决方案2】:

    经过几天和几天的谷歌搜索,上面@Ajay 给出的答案终于对我有用:

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

    dotnet ef migrations add Mymigration --project "c:\repos\myproject\Data" 
    

    ...您应该从您的主启动项目(如 c:\repos\myproject\Web)中执行此命令

    【讨论】:

      【解决方案3】:

      先切换目录到项目目录,然后添加.csproj

      $ dotnet ef migrations add InitialCreate --project DataAccess.csproj
      

      我希望它有效!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-05-20
        • 1970-01-01
        • 2017-09-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-06
        相关资源
        最近更新 更多