如何与Entity Framework Code First建立一对一的关系
我一直在阅读有关在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);
执行时, Account
上的AccountConfig
属性为NULL
, AccountConfig
上的Account
属性是不正确的记录(巧合的是,检索到的Account.Id
与AccountConfig.Id
相同,但我不知道这是否意味着什么)。
在数据库中, Account
表没有对AccountConfig
记录的引用,但AccountConfig
表使用AccountId
列引用了Account
记录。
最终结果是我可以从Account
引用AccountConfig
,并且(如果可能的话)引用AccountConfig
Account
。
使用EF,仅在共享主键的表上支持一对一关系。 您的AccountConfig
表具有自己的主键和Account
的外键。 EF仅支持与此配置的一对多关系。
本文对EF中的1:1和1:0..1关系进行了很好的解释。 这里的限制是EF不支持唯一约束这一事实的副产品。