我一直在阅读所有有关在EF中建立一对一关系的人的Google和SO页面,但这对我不起作用。

这是我的模型:

帐户:

public int Id {get; set;}
public virtual AccountConfig AccountConfig {get; set;}

帐户 map :
HasKey(t => t.Id);
HasRequired(t => t.AccountConfig)
    .WithOptional();

帐户配置:
public int Id {get; set;}
public int AccountId {get; set;}
public virtual Account Account {get; set;}

帐户配置图:
HasKey(t => t.Id);
HasRequired(t => t.Account)
    .WithOptional(t => t.AccountConfig);

当执行时,AccountConfig上的Account属性为NULL,而Account上的AccountConfig属性为不正确的记录(碰巧,检索到的Account.IdAccountConfig.Id相同,但我不知道这是否意味着任何意思)。

在数据库中,Account表没有对AccountConfig记录的引用,但是AccountConfig表具有对Account记录的引用(使用AccountId列)。

最终结果对我来说是AccountConfigAccount的引用,以及(如果可能的话)AccountAccountConfig的引用。

最佳答案

使用EF,只有共享主键的表才支持一对一关系。您的AccountConfig表具有其自己的主键和Account的外键。 EF仅支持这种配置的一对多关系。

This article很好地解释了EF中的1:1和1:0..1关系。此处的限制是EF doesn't yet support unique constraints这一事实的副产品。

关于c# - 如何首先与Entity Framework Code建立一对一关系,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15549680/

10-10 20:21