1对1关系,EF Code First双方可选

时间:2014-02-16 23:15:47

标签: entity-framework ef-code-first entity-framework-6

这个问题不断涌现,但我找不到任何人正在做我的事情,所以这里有:

我有一张表可以与许多表中的一个表有关系。有些有很多,有些有1个。在所有情况下,它都是可选的。

所以我们有一张图片表。

我们有产品,供应商,用户。

产品与图片有一对多的关系(他们可以上传每件产品的多张照片)。 用户与图片一对一(两侧可选)。 (如果用户上传照片,很棒,如果没有,没问题) 供应商与用户具有一对一的关系,除非它与不同的表有关。

这适用于许多关系,但一对一不能正常工作。

我希望双方都有虚拟,但只在Pictures表中定义可空的ForeignKey。

public virtual Picture UserPhoto { get; set; }

然后在另一边:

public virtual User User{ get; set; }
[ForeignKey("User")]
public int? UserID { get; set; }

我喜欢在代码中使用密钥,而不仅仅是在数据库中,所以我不想仅仅用流利的方式配置关系。但如果我在顶部添加一个流畅的配置,它将添加额外的外键。

如果没有流畅的配置,我们会得到可怕的

  

多重性在关系'Picture_User'中的角色'Picture_User_Source'中无效。由于Dependent Role属性不是关键属性,因此Dependent Role的多重性的上限必须为'*'。

0 个答案:

没有答案