这个问题不断涌现,但我找不到任何人正在做我的事情,所以这里有:
我有一张表可以与许多表中的一个表有关系。有些有很多,有些有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的多重性的上限必须为'*'。