EF-Core: таблица «имя» уже существует — при попытке обновления базы данныхC#

Место общения программистов C#
Ответить
Anonymous
 EF-Core: таблица «имя» уже существует — при попытке обновления базы данных

Сообщение Anonymous »

ASP Core 3.1 — API. Я использую последнюю версию Entity Framework Core.
Я создал таблицу ToDoItem и ToDoItemContext. После создания первоначальной миграции и запуска update-database. Теперь эта таблица есть в моей базе данных. Теперь я добавил новую модель под названием: ToDoItemDescription.
Когда я пытаюсь обновить базу данных после создания новой миграции, я получаю сообщение об ошибке:

Таблица todoitems уже существует

Подробнее: у меня есть два контекста, и это команда, которую я побежал:

Код: Выделить всё

update-database -context todoitemscontext
Я тоже пробовал:

Код: Выделить всё

update-database -context todoitemscontext -migration AddDescription
Вот мой полный код:
Модели:

Код: Выделить всё

public class TodoItem : IEntity
{
public long Id { get; set; }
public string Name { get; set; }
bool IsComplete { get; set; }
}

public class ToDoItemDescription
{
public int id { get; set; }
public string Description { get; set; }
//public int ToDoItemId { get; set; }
public TodoItem TodoItem { get; set; }
}
Контекст:

Код: Выделить всё

public class TodoItemsContext : DbContext
{
public TodoItemsContext(DbContextOptions options) : base(options) { }

public DbSet TodoItems { get; set; }
public DbSet TodoItemsDescription { get; set; }
}
Миграции:

Код: Выделить всё

[DbContext(typeof(TodoItemsContext))]
partial class TodoItemsContextModelSnapshot : ModelSnapshot
{
protected override void BuildModel(ModelBuilder modelBuilder) {
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "3.1.9")
.HasAnnotation("Relational:MaxIdentifierLength", 64);
modelBuilder.Entity("project.Models.ToDoItemDescription", b => {
b.Property("id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property("Description")
.HasColumnType("longtext CHARACTER SET utf8mb4");
b.Property("TodoItemId")
.HasColumnType("bigint");
b.HasKey("id");
b.HasIndex("TodoItemId");
b.ToTable("TodoItemsDescription");
});

modelBuilder.Entity("project.Models.TodoItem", b => {
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("bigint");
b.Property("IsComplete")
.HasColumnType("tinyint(1)");
b.Property("Name")
.HasColumnType("longtext CHARACTER SET utf8mb4");
b.HasKey("Id");
b.ToTable("TodoItems");
});
modelBuilder.Entity("project.Models.ToDoItemDescription", b =>
{
b.HasOne("project.Models.TodoItem", "TodoItem")
.WithMany()
.HasForeignKey("TodoItemId");
});
#pragma warning restore 612, 618
}

public partial class TodoItems_Initial : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "TodoItems",
columns: table => new
{
Id = table.Column(nullable: false)
.Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn),
Name = table.Column(nullable: true),
IsComplete = table.Column(nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_TodoItems", x => x.Id);
});
}

protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "TodoItems");
}
}

public partial class AddDescription : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "TodoItemsDescription",
columns: table =>  new
{
id = table.Column(nullable: false)
.Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn),
Description = table.Column(nullable: true),
TodoItemId = table.Column(nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_TodoItemsDescription", x => x.id);
table.ForeignKey(
name: "FK_TodoItemsDescription_TodoItems_TodoItemId",
column: x => x.TodoItemId,
principalTable: "TodoItems",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
});

migrationBuilder.CreateIndex(
name: "IX_TodoItemsDescription_TodoItemId",
table: "TodoItemsDescription",
column: "TodoItemId");
}

protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "TodoItemsDescription");
}
}
Спасибо.

Подробнее здесь: https://stackoverflow.com/questions/646 ... e-database
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»