我试图将属性租户(类型租户)从子类移动到基类。我使用TPH策略,因为我已经有了Tenant_Id
列,我预计迁移不会发生任何变化。
然而,实体框架会产生这样的迁移:
DropForeignKey("dbo.JobDetailsBases", "Tenant_Id", "dbo.Tenants");
AddColumn("dbo.JobDetailsBases", "Tenant_Id1", c => c.Guid());
CreateIndex("dbo.JobDetailsBases", "Tenant_Id1");
AddForeignKey("dbo.JobDetailsBases", "Tenant_Id1", "dbo.Tenants", "Id");
如何告诉EF使用同一列?出于显而易见的原因,我不想要列Tenant_Id1。
更新:我试图分两步完成。首先从子类中删除属性,生成迁移,然后添加基类并生成另一个迁移。我希望这会改善情况 - 它没有。
问题是第一次迁移是空的 - EF不想删除该字段。我更新了迁移以删除它,但它仍然以某种方式保留在模型中。结果是,即使我添加了这个,EF也会生成它(仍然使用Tenant_Id1):
AddColumn("dbo.JobDetailsBases", "Tenant_Id1", c => c.Guid());
CreateIndex("dbo.JobDetailsBases", "Tenant_Id1");
AddForeignKey("dbo.JobDetailsBases", "Tenant_Id1", "dbo.Tenants", "Id");
所以现在的问题是:如何改变内部EF模型以摆脱我已经从课程中删除的原始属性?