5

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

这是我的模型:

帐户:

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

账户地图:

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属性 on和属性 onAccount是不正确的记录(巧合的是,检索到的与 相同,但我不知道这是否意味着什么)。NULLAccountAccountConfigAccount.IdAccountConfig.Id

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

最终结果是我可以引用AccountConfigfromAccount和(如果可能的话)引用Accountfrom AccountConfig

4

1 回答 1

9

使用 EF,仅在共享主键的表上支持一对一关系。您的AccountConfig表有自己的主键和Account. EF 仅支持与此配置的一对多关系。

这篇文章很好地解释了 EF 中的 1:1 和 1:0..1 关系。这里的限制是EF 还不支持唯一约束这一事实的副产品。

于 2013-03-21T14:08:29.037 回答