我可以在设计视图中进入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 *.
答案 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关系。