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

时间:2017-10-05 13:01:58

标签: c# ef-code-first entity-framework-core ef-migrations

我们正处于ef核心的初步开发应用中。我不确定如何核心 模型快照与其他组件(如迁移和数据库)进行通信/流动。我不知道哪些将首先应用于数据库迁移或模型快照以及如何通过迁移进行验证。

我的情况:

  1. 现有迁移& TFS中提供快照(开发人员已测试并已提交 Migraton&从他的系统模型快照。)
  2. Dev 2从他的系统中获取最新信息并指向新数据库而没有任何待定更改。
  3. 执行update-database时,他面临的错误是该列已经删除。
  4.   

    ALTER TABLE DROP COLUMN失败,因为列' CreatedDateTime'表格' 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中提交的顺序?

    请建议。谢谢!

1 个答案:

答案 0 :(得分:1)

最初我使用EnsureCreated(),现在我改为Migrate()现在正在使用。