团队环境中 entityframework 核心模型快照的问题

Issues with entityframework core model snapshot in team environment

我们正在初步开发应用ef core。我不确定 ef core 模型快照 communicates/flows 与其他组件(如迁移)和 database.I 不知道迁移或模型快照哪个将首先应用于数据库,以及如何在后台验证迁移。

我的情况:

  1. TFS 中可用的现有迁移和快照(开发人员测试并提交 来自他系统的 Migraton 和模型快照)。
  2. Dev 2 从他的系统获取最新信息并指向新数据库,没有任何未决更改。
  3. 在执行 update-database 时,他遇到列已删除的错误。

ALTER TABLE DROP COLUMN failed because column 'CreatedDateTime' does not exist in table 'TaskEntityRelationships'.

简化快照:

modelBuilder.Entity("KrossDelivery.Data.Objects.TaskEntityRelationships.TaskEntityRelationship", b =>
        {
            b.Property<int>("Id")
                .ValueGeneratedOnAdd();

            b.Property<int>("CreationTransactionId");

            b.Property<int>("DeliveryAgentId");

            b.Property<int>("DeliveryExecutiveId");

            b.Property<DateTime?>("EndDateTime");

            b.Property<int?>("LastEditTransactionId");

            b.Property<DateTime>("StartDateTime");

            b.Property<int?>("TaskEntityStatusEventId");

            b.Property<int?>("TaskEntityStatusId");

            b.Property<int>("TaskId");

            b.HasKey("Id");

            b.HasIndex("CreationTransactionId");

            b.HasIndex("DeliveryAgentId");

            b.HasIndex("DeliveryExecutiveId");

            b.HasIndex("LastEditTransactionId");

            b.HasIndex("TaskEntityStatusEventId");

            b.HasIndex("TaskEntityStatusId");

            b.HasIndex("TaskId");

            b.ToTable("TaskEntityRelationships");
        });

简化迁移:

protected override void Up(MigrationBuilder migrationBuilder)
    {
        migrationBuilder.DropColumn(
            name: "CreatedDateTime",
            table: "TaskEntityRelationships");
}

从代码中我可以了解到 CreatedDateTime 已经从模型中删除 snapshot.Dev A 提交了他的模型快照并进行了迁移,但是当 Dev2 使用最新版本并指向新数据库时它无法正常工作。我不知道如何管理模型快照和迁移,以及我应该在 TFS 中按什么顺序提交?

请advice.Thanks!

最初我使用 EnsureCreated(),现在我改为 Migrate() 现在可以使用了。