Linq DBML, сопоставление таблицы с первичным ключом, охватывающим 2 столбца - PullRequest
0 голосов
/ 16 ноября 2009

У меня есть три таблицы: логин, логин и роли. Login присоединяется к LoginRoles, а LoginRoles присоединяется к Roles. LoginRoles - это таблица «многие ко многим», и я хочу ограничить столбцы как уникальные ВМЕСТЕ.

LoginRoles: MemberId (int), RoleId (int)

Это похоже на таблицу aspnet_UsersInRoles в базе данных членства по умолчанию: Таблица 3.2

Я установил первичный ключ для этой таблицы как оба столбца.

При перетаскивании таблицы в диаграмму DBML я не вижу этот первичный ключ, представленный на диаграмме, и получаю предупреждение (и другие подобные):

Предупреждение 1 DBML1062: Атрибут Type 'LoginRole' элемента Association 'Login_LoginRole' элемента Type 'Login' не имеет первичного ключа. Код не будет сгенерирован для ассоциации. 0 0

Есть идеи, как заставить его распознавать первичный ключ?

1 Ответ

1 голос
/ 16 ноября 2009

Вы пытаетесь использовать 2 ключа значения в качестве первичного ключа для таблицы. Это действительно должно быть сделано в определении таблицы SQL. Если вы щелкните правой кнопкой мыши внутри определения таблицы, вы сможете получить доступ к параметру Indexes / Keys. Там вы можете указать 2 столбца, которые вы хотите использовать в качестве первичного ключа.

В качестве альтернативы вы можете запустить небольшой SQL-скрипт, например:

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

После того, как вы обновили свою таблицу, вам нужно удалить / повторно перетащить ее обратно в дизайнер DBML, и код обновится.

...