Add-Migration генерирует различные миграции в VS2017 по сравнению с VS2015 - PullRequest
1 голос
/ 14 марта 2019

Мы недавно перешли с VS2015 на VS2017 для нашего приложения EF Code First. Некоторые разработчики в команде (но не все) получают разные результаты, вызывая Add-Migration на VS2015 и VS2017.

Например, если я генерирую миграцию на VS2015 без ожидаемых изменений модели и новой сборки, я получаю ожидаемую пустую миграцию

Add-Migration ... -Name ShouldBeAnEmptyMigration

дает мне:

namespace Blah.Foo.DataModel.Migrations
{
    using System;
    using System.Data.Entity.Migrations;

    public partial class ShouldBeAnEmptyMigration: DbMigration
    {
        public override void Up()
        {
        }

        public override void Down()
        {
        }
    }
}

Если я откатываю эти изменения и запускаю ту же команду для той же базы данных из VS2017, я получаю миграцию, полную нежелательных изменений:

namespace Blah.Foo.DataModel.Migrations
{
    using System;
    using System.Data.Entity.Migrations;

    public partial class ShouldBeAnEmptyMigration: DbMigration
    {
        public override void Up()
        {
            // For some reason EF is trying to add foreign key columns that
            // already exist except with an additional suffix of "1".
            // e.g. We already have an FK from 'Child' to 'Parent' using
            // Guid Parent_Id which has been in place for (literally) years.
            // There are 11 such columns it is trying to add here.
            // Some date base a couple years, some are more recent.
            // I don't see a pattern for which columns it is choosing

            // 11 of these, one for each "new" column ...
            DropForeignKey("Child", "Parent_Id", "Parent");
            ...
            // 11 of these ...
            DropIndex("Child", new[] { "Parent_Id" });
            ...
            // 11 of these ...
            AddColumn("Child", "Parent_Id1", c => c.Guid(nullable: false));
            ...
            // 11 of these ...
            CreateIndex("Child", "Parent_Id1");
            ...
            // 11 of these ...
            AddForeignKey("Child", "Parent_Id1", "Parent", "Id");
            ...
        }

        public override void Down()
        {
            // similar set of DropForeignKey, DropIndex, DropColumn,
            // CreateIndex, AddForeignKey
        }
    }
}

Обратите внимание, что в большинстве затронутых моделей данных последние изменения отсутствуют.

В настоящее время я вынужден создавать все свои миграции на VS2015. Есть ли способ заставить VS2017 "вести себя"?

Версия:

  • Visual Studio Pro 2015 (14.0.25431.01, обновление 3)
  • Visual Studio Pro 2017 (15.9.7)
  • EntityFramework.6.2.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...