我一直在阅读有关在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
属性为NULL
,Account
上的AccountConfig
属性为不正确的记录(巧合的是,已检索到的Account.Id
1}}与AccountConfig.Id
相同,但我不知道这是否意味着什么。)
在数据库中,Account
表没有对AccountConfig
记录的引用,但AccountConfig
表使用{Account
表引用AccountId
记录{1}}栏。
最终结果是我可以引用AccountConfig
中的Account
和(如果可能)引用来自Account
的{{1}}。
答案 0 :(得分:9)
使用EF,只有共享主键的表才支持一对一关系。您的AccountConfig
表有自己的主键,以及Account
的外键。 EF仅支持与此配置的一对多关系。
This article对EF中的1:1和1:0..1关系有一个很好的解释。这里的限制是EF doesn't yet support unique constraints。
这一事实的副产品