团队环境中 entityframework 核心模型快照的问题
Issues with entityframework core model snapshot in team environment
我们正在初步开发应用ef core。我不确定 ef core
模型快照 communicates/flows 与其他组件(如迁移)和 database.I 不知道迁移或模型快照哪个将首先应用于数据库,以及如何在后台验证迁移。
我的情况:
- TFS 中可用的现有迁移和快照(开发人员测试并提交
来自他系统的 Migraton 和模型快照)。
- Dev 2 从他的系统获取最新信息并指向新数据库,没有任何未决更改。
- 在执行
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()
现在可以使用了。
我们正在初步开发应用ef core。我不确定 ef core 模型快照 communicates/flows 与其他组件(如迁移)和 database.I 不知道迁移或模型快照哪个将首先应用于数据库,以及如何在后台验证迁移。
我的情况:
- TFS 中可用的现有迁移和快照(开发人员测试并提交 来自他系统的 Migraton 和模型快照)。
- Dev 2 从他的系统获取最新信息并指向新数据库,没有任何未决更改。
- 在执行
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()
现在可以使用了。