对于不存在的引用,Entity Framework Core是否可以选择使用默认值0而不是null?

时间:2017-08-07 16:24:04

标签: entity-framework entity-framework-core

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

1 个答案:

答案 0 :(得分:1)

不会,这会破坏数据库端的外键约束,因为Creator行的外键不会有0行,主键为Project指向。

在关系数据库中,至少那些尊重外键约束的行,数据之间的每个关系都表示为一对主键和外键。该数据库旨在强制外键始终指向有效的主键。它将阻止您将FK字段更新为PK字段中不存在的值。只要FK仍然指向它,它也会试图删除包含PK的行,你也会大喊大叫(除非启用了cascade-delete,但这很复杂)。

理论上,实体框架可能会被强制进入尝试来做你想做的事情,但是数据库会拒绝它,并且EF几乎肯定会在尝试检索0的行时遇到问题如果配置为包含导航属性,则为null值。