代码之家  ›  专栏  ›  技术社区  ›  Giova

webdeploy+efcore迁移:如何设置目标项目

  •  4
  • Giova  · 技术社区  · 7 年前

    在我们的ASP.NET Core2.1解决方案中,我们将EF和迁移放在一个单独的项目中。

    由于有了cli,我们可以从默认项目管理迁移 例如:

    dotnet ef migrations add NewMigration --project MyApp.MyBdd
    

    在本例中,我们将myapp.mybdd设置为目标项目。

    但是webdeploy向导不显示关于bdd迁移的任何设置。

    我可以手动将ef迁移设置为pubxml文件,如下所示:

    Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
      <PropertyGroup>
           <TimeStampOfAssociatedLegacyPublishXmlFile />
           <EncryptedPassword />
      </PropertyGroup>
      <ItemGroup>
          <EFMigrations Include="MyApp.MyBdd.MyDbContext">
             <Value>Server=MyServer%3bDatabase=MyBdd%3bIntegrated Security=True%3b</Value>
          </EFMigrations>
      </ItemGroup>
    </Project>
    

    实体框架SQL脚本生成失败(日志中没有内容)

    问题 :如何将目标项目设置为WebDeploy设置文件?

    1 回复  |  直到 6 年前
        1
  •  3
  •   Daniel Rothig    6 年前

    编辑 感谢@ivanstoev指出 源代码中显示的一种方式。将此添加到 <PropertyGroup> :

    <EFMigrationsAdditionalArgs>
         --project MyApp.MyBdd
    </EFMigrationsAdditionalArgs>
    

    原始答案 不幸的是,这是不可能的。efmigrations由名为 GenerateEFSQLScripts ( see source )它总是使用正在部署的项目进行迁移,如 MSBuildProjectDirectory 变量。你可以看到这个项目正在运行 here ,没有任何选项覆盖它。

    我看到两个选项:您可以重构代码,使dbcontext位于您正在部署的项目中,或者您可以在应用程序启动时运行迁移,即添加

    dbContext.Database.Migrate();

    对你 Startup.Configure() 实施。