2009-11-16 15 views
0

J'ai trois tables: Login, LoginRoles et Roles. Login se connecte à LoginRoles et LoginRoles se joint aux rôles. LoginRoles est une table plusieurs-à-plusieurs, et je veux contraindre les colonnes comme étant unique TOGETHER.Linq DBML Mappage d'une table avec une clé primaire qui s'étend sur deux colonnes

LoginRoles: MemberID (int), RoleId (int)

Ceci est similaire à la table aspnet_UsersInRoles dans la base de données de membres par défaut: Table 3.2

Je mis la clé primaire pour cette table à la fois du colonnes.

Lorsque vous faites glisser la table dans le diagramme DBML Je ne vois pas cette clé primaire représentée dans le diagramme et je reçois l'avertissement (et d'autres semblables):

Avertissement 1 DBML1062: L'attribut Type « LoginRole » de l'élément Association 'Login_LoginRole' de l'élément Type 'Login' n'a pas de clé primaire. Aucun code ne sera généré pour l'association. 0 0

Des idées sur la façon de le faire reconnaître la clé primaire?

Répondre

1

Vous essayez d'utiliser 2 clés de valeur comme clé primaire pour la table. Cela devrait vraiment être fait dans la définition de la table SQL. Si vous faites un clic droit dans la définition de la table, vous devriez pouvoir accéder à l'option Index/Clés. Dans là, vous êtes en mesure de spécifier les 2 colonnes que vous souhaitez utiliser comme clé primaire.

Sinon, vous pouvez exécuter un petit script SQL, quelque chose comme:

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

Une fois que vous avez mis à jour votre table, vous devez supprimer/redropper retour votre table sur le concepteur DBML et le code sera mis à jour.

+0

Merci, pour une raison quelconque, en sélectionnant simplement les 2 champs dans la conception de la table, un clic droit puis SET PRIMARY KEY ne suffisait pas ... le script a bien fonctionné. – CRice