EF 6.3: он создает ту же миграцию для перехода от DataAnnotation к FluentAPI - PullRequest
0 голосов
/ 31 августа 2018

У меня есть аннотация данных:

    [Required]
    [MaxLength(150)]
    [Index(IsUnique = true)]
    public string GuidName { get; set; }

Теперь нам нужно переместить его в Fluent API (и не спрашивать меня, почему). Мой код:

        this.Property(c => c.GuidName).IsRequired().HasMaxLength(150);
        this.HasIndex(c => c.GuidName).IsUnique(true).IsClustered(false);

Генерирует следующую миграцию:

    public override void Up()
    {
        DropIndex("dbo.Companies", new[] { "CompanyUniqueString" });
        CreateIndex("dbo.Companies", "CompanyUniqueString", unique: true);
    }

    public override void Down()
    {
        DropIndex("dbo.Companies", new[] { "CompanyUniqueString" });
        CreateIndex("dbo.Companies", "CompanyUniqueString", unique: true);
    }

Как мы видим, он делает то же самое и имеет одинаковый код в Up и Down. Но почему он вообще генерируется?

1 Ответ

0 голосов
/ 31 августа 2018

Вы удалили аннотацию данных Index из поля, поэтому у вас есть строка DropIndex(...), сгенерированная в методе Up() и соответствующая строка CreateIndex(...) в методе Down(). В то же время вы добавили индекс через Fluent API, он дает вам остаток (CreateIndex(...) в методе Up() и DropIndex(...) в Down()).

Итак, EF обнаруживает два изменения в модели и не проверяет, выдает ли Fluent API тот же самый индекс, что и аннотация удаленных данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...