Linq DBML使用跨越2列的主键映射表

时间:2009-11-16 11:24:41

标签: linq-to-sql mapping diagram

我有三个表:Login,LoginRoles和Roles。登录加入LoginRoles和LoginRoles加入Roles。 LoginRoles是一个多对多表,我想将列限制为唯一的一起。

LoginRoles:MemberId(int),RoleId(int)

这类似于默认成员资格数据库中的aspnet_UsersInRoles表: Table 3.2

我将此表的主键设置为两列。

将表格拖入DBML图表时,我看不到图中所示的主键,我收到警告(以及其他类似的警告):

警告1 DBML1062:Type元素“Login”的关联元素“Login_LoginRole”的Type属性“LoginRole”没有主键。不会为关联生成代码。 0 0

有关如何识别主键的任何想法?

1 个答案:

答案 0 :(得分:1)

您正在尝试使用2个值键作为表的主键。这应该在SQL表定义中完成。如果右键单击表定义,则应该能够访问“索引/键”选项。在那里,您可以指定要用作主键的2列。

或者你可以运行一个小的SQL脚本,例如:

ALTER TABLE LoginRoles
ADD CONSTRAINT pk_MemberRole PRIMARY KEY (MemberID,RoleID)

更新表后,您需要将表删除/重新放回DBML设计器,代码将更新。