如何与Entity Framework Code First建立一对一的关系

时间:2013-03-21 14:01:44

标签: c# .net entity-framework entity

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

这是我的模特:

帐户:

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上的Account属性为NULLAccount上的AccountConfig属性为不正确的记录(巧合的是,已检索到的Account.Id 1}}与AccountConfig.Id相同,但我不知道这是否意味着什么。)

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

最终结果是我可以引用AccountConfig中的Account和(如果可能)引用来自Account的{​​{1}}。

1 个答案:

答案 0 :(得分:9)

使用EF,只有共享主键的表才支持一对一关系。您的AccountConfig表有自己的主键,以及Account的外键。 EF仅支持与此配置的一对多关系。

This article对EF中的1:1和1:0..1关系有一个很好的解释。这里的限制是EF doesn't yet support unique constraints

这一事实的副产品