我一直在阅读所有有关在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.Id
与AccountConfig.Id
相同,但我不知道这是否意味着任何意思)。在数据库中,
Account
表没有对AccountConfig
记录的引用,但是AccountConfig
表具有对Account
记录的引用(使用AccountId
列)。最终结果对我来说是
AccountConfig
对Account
的引用,以及(如果可能的话)Account
对AccountConfig
的引用。 最佳答案
使用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/