У меня есть класс, который включает 2 свойства: Value
и Description
. Эти 2 свойства были добавлены в класс пару миграций назад, и никогда не возникало проблем.
Сегодня, работая над веткой, я заметил, что, когда я добавил новую миграцию, она была добавлена, чтобы снова добавить столбцы, поэтому я начал проводить некоторое тестирование.
Начиная с текущей базовой линии, без изменения сущности, если я добавлю миграцию под названием «Тест», я получу это:
using Microsoft.EntityFrameworkCore.Migrations;
namespace AgWare.Data.Migrations
{
public partial class Test : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
}
protected override void Down(MigrationBuilder migrationBuilder)
{
}
}
}
Что верно, я не внес никаких изменений в свои Модели. Git показывает только новые файлы миграции и его файлы Designer.cs как добавленные, без изменений в снимке. Теперь, если я запускаю команду «Удалить миграцию», тестовая миграция удаляется, но Git неожиданно сообщает, что мой снимок изменился, и из записи modelBulder
для вышеупомянутого класса были удалены следующие строки:
b.Property<decimal?>("Value")
.HasColumnType("Money");
b.Property<string>("Description")
.HasMaxLength(75);
Таким образом, удаление Миграции, которая не имеет ничего общего с этими свойствами, каким-то образом приводит к обновлению Снимка, чтобы отразить, что они были удалены по какой-то причине. Это означает, что когда я добавляю еще одну миграцию, она генерирует код для повторного создания этих столбцов, который не будет работать, поскольку они уже существуют. Что может быть причиной этого? Я хочу выяснить это сейчас, чтобы это не стало повторением для всех будущих миграций.