Я создал таблицу 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
Мобильная версия