У меня есть проект (.Net Core 2.0) и база данных (SQL Server), которые обновляются независимо.Я хотел бы добавить миграции в проект.То, что я уже сделал, это текущая база данных scaffolded и заполнение моего modelBuilder, чтобы оно было эквивалентно моим отношениям с таблицами, а затем создал первую миграцию.В этом начальном сценарии миграции все таблицы удаляются и воссоздаются, и я не хочу потерять свои данные.Например, вот так выглядит мой построитель модели «Адреса»:
builder.ToTable("Addresses");
builder.HasKey(x => x.Id);
builder.Property(e => e.City).HasMaxLength(250);
builder.Property(e => e.Country).HasMaxLength(50);
builder.Property(e => e.Notes).HasColumnType("text");
builder.Property(e => e.Number).HasMaxLength(50);
builder.HasOne(a => a.User).WithMany(u => u.Addresses)
.HasForeignKey(a => a.UserId);
builder.HasIndex(e => e.UserId)
.HasName("fkIdx_72");
Вот так это выглядит в моментальном снимке контекста:
b.Property<long>("Id").ValueGeneratedOnAdd();
b.Property<string>("City").HasMaxLength(250);
b.Property<string>("Country").HasMaxLength(50);
b.Property<string>("Notes").HasColumnType("text");
b.Property<string>("Number").HasMaxLength(50);
b.Property<long?>("UserId");
b.HasKey("Id");
b.HasIndex("UserId").HasName("fkIdx_72");
b.ToTable("Addresses");
А вот и первый скрипт миграции.Метод Up:
migrationBuilder.CreateTable(
name: "Addresses",
columns: table => new
{
Id = table.Column<long>(nullable: false)
.Annotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn),
City = table.Column<string>(maxLength: 250, nullable: true),
Country = table.Column<string>(maxLength: 50, nullable: true),
Notes = table.Column<string>(type: "text", nullable: true),
Number = table.Column<string>(maxLength: 50, nullable: true),
UserId = table.Column<long>(nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Addresses", x => x.Id);
table.ForeignKey(
name: "FK_Addresses_Users_UserId",
column: x => x.UserId,
principalTable: "Users",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
});
Метод Up:
migrationBuilder.DropTable(
name: "Addresses");
Почему это обязательно для воссоздания всех таблиц?Я думаю, что в БД чего-то не хватает ... Любая помощь?