我在 EF6 项目中为现有属性添加了一个外键,该属性注释为
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
VS 为其生成迁移,并将 FK 添加到 DB 中。我按预期在查询中使用了 FK。一切看起来都很好。
后来,包含该属性的实体实例的更新导致了此错误。 EF6不支持这样的FK吗?我发现的一个答案建议不要,但我找不到任何说明这一点的 MS 文档。如果 EF 不支持,为什么要将 FK 添加到数据库并在查询中使用关系?
编辑 1:FK 是可选的(即可为空)。新实例始终将其设置为 null。 SP 在某些情况下运行并将其设置为指向其相关实例。我不确定它是否相关,但它是对同一个表中不同行的引用。
外键(子表中)的值根据建立的关系指向父表中的相应行。因此,从书中,我们可以联系到作者,从帖子中,我们可以联系到博客,等等......
如果您将此值设置为“数据库计算值”,那么每次您更新子行(Book)或插入新行时,都会从数据库引擎为FK计算一个新值...我认为这没有任何意义,因为新的 FK 值不一定指向父表中存在的行,因此会出现错误。