如果我有一个名为Project的对象,它有一个名为Creator的属性,而creator是一个复杂类型,如果尚未分配Creator属性,EF将自动使用值null。是否可以在数据库字段中使用0而不是null?
答案 0 :(得分:1)
不会,这会破坏数据库端的外键约束,因为Creator
行的外键不会有0
行,主键为Project
指向。
在关系数据库中,至少那些尊重外键约束的行,数据之间的每个关系都表示为一对主键和外键。该数据库旨在强制外键始终指向有效的主键。它将阻止您将FK字段更新为PK字段中不存在的值。只要FK仍然指向它,它也会试图删除包含PK的行,你也会大喊大叫(除非启用了cascade-delete,但这很复杂)。
理论上,实体框架可能会被强制进入尝试来做你想做的事情,但是数据库会拒绝它,并且EF几乎肯定会在尝试检索0的行时遇到问题如果配置为包含导航属性,则为null值。