我有User
可能有零或一Profile
。Profile
从代码的角度来看,如果我可以访问它应该更方便User
(因为我会更频繁地访问用户信息而不是其配置文件),但这与 EF Code First 冲突:
class User
{
public int Id { get; set; }
[ForeignKey("Id")]
public virtual Profile Profile { get; set; }
}
class Profile
{
public int Id { get; set; }
}
User
这放在 DbContext 中,将创建表,如果没有Profile
在 => bad 之前创建,我无法创建表,因为这User
是显而易见的原则。最简单的(对于愚蠢的我)解决方案很明显:
class User
{
public int Id { get; set; }
}
class Profile
{
public int Id { get; set; }
[ForeignKey("Id")]
public virtual User User { get; set; }
}
这给了我更多预期的数据库行为。
但是......我觉得这个解决方案不是最好的方法。例如,我无法使用延迟加载通过所有配置文件访问所有用户。所以问题是“如何正确设置一对零/一关系(通过 DataAnnotation 和 FluentAPI)?” 换句话说,“如何正确设置“一User
对零/一Profile
”的关系?
可能我完全想错了...