Entity framework 对于不存在的引用,Entity Framework Core是否有使用默认值0而不是null的选项?

Entity framework 对于不存在的引用,Entity Framework Core是否有使用默认值0而不是null的选项?,entity-framework,entity-framework-core,Entity Framework,Entity Framework Core,如果我有一个名为Project的对象,该对象的属性名为Creator,并且Creator是复杂类型,那么如果未分配Creator属性,EF将自动使用null值。是否可以在数据库字段中使用0而不是null?否,这将打破数据库端的外键约束,因为项目行的外键不会指向主键为0的创建者行 在关系数据库中,至少在那些考虑外键约束的数据库中,行之间的每个关系都表示为一对主键和外键。数据库旨在强制外键始终指向有效的主键。它将阻止您将FK字段更新为PK字段中不存在的值。它也会因为你试图删除包含PK的行而大喊大叫,

如果我有一个名为Project的对象,该对象的属性名为Creator,并且Creator是复杂类型,那么如果未分配Creator属性,EF将自动使用null值。是否可以在数据库字段中使用0而不是null?

否,这将打破数据库端的外键约束,因为项目行的外键不会指向主键为0的创建者行

在关系数据库中,至少在那些考虑外键约束的数据库中,行之间的每个关系都表示为一对主键和外键。数据库旨在强制外键始终指向有效的主键。它将阻止您将FK字段更新为PK字段中不存在的值。它也会因为你试图删除包含PK的行而大喊大叫,只要FK仍然指向它,除非打开级联删除,但这会变得复杂


理论上,Entity Framework可能会被迫尝试执行您想要的操作,但数据库会拒绝它,如果EF配置为包含导航属性,则在尝试检索其中包含0/null值的行时几乎肯定会遇到问题。

因此,您已经概述了SQL,如果配置了关系,当然会有问题。但是EF呢?有没有办法将其配置为将0用于空关系而不是空关系?EF需要一个数据库来支持它。据我所知,没有数据库可以使用0而不是null来表示空外键。确实有。SQL server。您必须向我展示如何在SQL server中执行此操作,因为我不知道如何执行此操作。您可以创建一列来表示您的FK。将其设置为int。在其中插入零。