如何阻止Entity Framework Core 7生成自引用外键迁移字段?
解决EF Core Code First生成多余自引用外键的问题
问题根源
你犯了一个基础错误:SampleEntity类错误继承了SampleEntities(也就是DbContext类)。EF Core的约定机制会把这种继承关系误判为实体间的关联,从而自动生成多余的SampleEntityId可空Guid字段和自引用外键约束。
解决方案
- 修正实体类的继承关系
实体类不需要继承DbContext,改成独立类即可:
namespace Model.SampleEntitySet { public class SampleEntity { public Guid Id { get; set; } public string Description { get; set; } = string.Empty; } }
- 清理错误迁移并重新生成
如果还没把错误迁移应用到数据库,先删除它:
dotnet ef migrations remove --context SampleEntities
然后重新执行初始迁移命令:
dotnet ef migrations add InitialCreate --context SampleEntities
补充说明
DbContext是用来管理数据库连接、实体映射的上下文类,实体类只需要定义自身的业务属性即可,两者不需要继承关系。之前的错误继承让EF Core误以为SampleEntity和SampleEntities之间存在关联,才会生成多余的自引用外键。
内容的提问来源于stack exchange,提问作者jpvermaas
相关产品推荐
相关产品推荐

