使用 modelbuilder.HasKey() 导致 entity framework 新迁移出错
Using modelbuilder.HasKey() causes error in entity framework new migrations
我有一些实体将复合键作为主键。
我使用 fluentApi 配置它们来设置组合键,例如:
modelBuilder.Entity<EntityWithCompositeKey>().HasKey(entity => new { entity.Property1, entity.Property2});
但是当我想在添加新迁移后更新数据库时出现错误:
System.InvalidOperationException: To change the IDENTITY property of a column, the column needs to be dropped and recreated.
经过一番挖掘,我意识到这是因为 fluentApi 中设置组合键的那些设置,我认为 entity framework 想要更改实体的主键以设置新的组合键,我得到了这个错误。 .. 我对吗???我哪里错了?
由于这个错误,我无法更新我的数据库,每次我需要删除迁移文件夹和数据库并重新创建它们,以便可以进行新的更改,而且随着我们接近生产,它变得非常烦人。
我正在使用 Entity Framework 5rc1 和 Asp.Net Core 3.1
更新列的主键时,需要在不删除迁移文件的情况下,删除迁移记录中的方法migrationBuilder.AlterColumn
。
这是初始记录。
然后我添加一个实体和 re-migrate。删除Up
方法中的migrationBuilder.AlterColumn
。
数据库中的密钥已更改。
我有一些实体将复合键作为主键。 我使用 fluentApi 配置它们来设置组合键,例如:
modelBuilder.Entity<EntityWithCompositeKey>().HasKey(entity => new { entity.Property1, entity.Property2});
但是当我想在添加新迁移后更新数据库时出现错误:
System.InvalidOperationException: To change the IDENTITY property of a column, the column needs to be dropped and recreated.
经过一番挖掘,我意识到这是因为 fluentApi 中设置组合键的那些设置,我认为 entity framework 想要更改实体的主键以设置新的组合键,我得到了这个错误。 .. 我对吗???我哪里错了?
由于这个错误,我无法更新我的数据库,每次我需要删除迁移文件夹和数据库并重新创建它们,以便可以进行新的更改,而且随着我们接近生产,它变得非常烦人。
我正在使用 Entity Framework 5rc1 和 Asp.Net Core 3.1
更新列的主键时,需要在不删除迁移文件的情况下,删除迁移记录中的方法migrationBuilder.AlterColumn
。
这是初始记录。
然后我添加一个实体和 re-migrate。删除Up
方法中的migrationBuilder.AlterColumn
。
数据库中的密钥已更改。