如何告诉EntityFramework 5.0两个实体之间存在一对一的关联?

时间:2014-06-09 09:25:47

标签: entity-framework entity-framework-5

我可以在设计视图中进入EDMX并更新关联的基数(1- ,0 - 等),但我想知道是否可以在此处执行此操作场景。

我有这两张桌子,让我们说:

User
-----
Id


UserProfile
-------------
Id
UserId
Stuff

单个用户可能只有一个配置文件。因此,我在UserId表中设置了一个UNIQUE约束而不是UserProfile列。此外,UserProfile.Id被定义为引用User.Id的外键。

但是,在Entity Framework模型中,我得到以下内容:

class User
{
  ICollection<UserProfile> UserProfiles { get; set; }
}

首先,我有UserProfile表没有自己的主键,如下所示:

UserProfile
--------------
UserId
Stuff

但是EntityFramework使其成为只读,因为它需要在每个要使其成为可写表的表上具有主键。因此,我在Id表格中添加了UserProfile列。

更新

我尝试在设计器的EDMX中设置User表和UserProfile表之间关联的多重/基数。但是,我得到这个错误,表明我应该把它变回原来的状态,即一对多的关系。

Running transformation: Multiplicity is not valid in Role 'UserBasicProfile' 
in relationship 'FK_UserBasicProfile_User'. Because the Dependent Role 
properties are not the key properties, the upper bound of the multiplicity 
of the Dependent Role must be *.

1 个答案:

答案 0 :(得分:0)

我找到了办法。好吧,不仅仅是1-1的关系,而是1-0..1的关系就是我所追求的,出于所有实际目的,这是一对一的关系。

如果你像我在我的问题中描述的那样陷入这个陷阱,那么你在做什么:

1)从依赖表中删除Id字段,在本例中为UserProfile表。因此,不要给它一个单独的主键。

2)而是将依赖表中的外键标记为自己的主键。在这种情况下,请将UserId字段本身标记为UserProfile表的主键。

除了这两个之外,我假设,正如我在问题中所概述的那样,权限User表中的主要和外键关系本例)和依赖表(本例中为UserProfile表)。

因此,您的新表结构应如下所示:

User
------
Id


UserProfile
-------------
UserId (foreign key, and also the primary key of this UserProfile table)
Stuff

实体框架将识别此1-0..1关系。