我正在使用一个已有系统,并将其更新到.NET Core、Web API和EF Core。
现有系统有两个表:
- 父表:Id,name等
- 子表:Id,ParentId,name等
尽管子表中存在ParentId
,但没有外键引用,但我想在查询父表时能够使用包含。我要求不要将FK作为删除的一部分添加,而是将负值放入parentId
列。这样他们就可以将其带回来,并且遗留系统是以这种方式构建的。
现在,在数据库优先迁移中,我如何指定一个没有fk的导航属性,让我的EF Core实现关系;或者至少将它们一起返回。添加可空外键不是一个选择,因为当添加了-ve(负)值时,它会破坏系统。
我确实建议进行完整的DB清理并摆脱-ve值,但这需要大量测试,并且没有交付成果。简而言之,在数据库优先迁移中如何添加导航属性而没有外键?
我尝试通过在模型中添加集合和虚拟条目来添加它,但在迁移后,它被覆盖了。我已经按照此文档在modelbuilder中使用HasMany添加了这个 - https://learn.microsoft.com/en-us/ef/core/modeling/relationships?tabs=fluent-api%2Cfluent-api-simple-key%2Csimple-key
但是scaffolding正在覆盖我的导航属性。