Я знаю, как создавать пользователей и назначать их для ролей и т. Д., Но когда я попытался немного глубже понять, как роли и таблицы членства могут устанавливать отношения друг с другом, я полностью растерялся (кстати, я знать, как работают внешние / первичные ключи;))
Кстати - я создал таблицы в базах данных с помощью мастера aspnet_sqlreg
Q1 - Оба SqlRolesProvider и SqlMemebershipProvider имеют свойство ApplicationName . Я подумал, что для того, чтобы два провайдера могли создавать ассоциации между своими пользователями и ролями, им обоим придется использовать одно и то же значение для свойства ApplicationName . Но, похоже, это не так.
A) В любом случае, я предполагаю, что свойство SqlRolesProvider.ApplicationName используется только для различения записей таблицы, принадлежащих разным поставщикам ролей, но они не используют это свойство для того, чтобы связывать свои роли только с провайдеры с одинаковым значением ApplicationName ?!
B) Но не было бы наиболее практичным, если бы поставщики ролей могли быть связаны только с поставщиками членства с тем же значением ApplicationName (таким образом, где SqlRolesProvider.ApplicationName == SqlMemebershipProvider.ApplicationName
) ?!
Q2. Меня также интересовало, можно ли связывать роли и пользователей, если поставщик ролей подключен к DB1 , а поставщик членства подключен к DB2 . Каким-то образом мне все еще удавалось назначать пользователей на разные роли, хотя роли были определены в другой базе данных.
А) Но почему это? А именно, если SqlRolesProvider.ApplicationName = «roleP" ( ApplicationID = 10 ) и SqlMembershipProvider.ApplicationName = «members» ( ApplicationID = 100 ), тогда для того, чтобы таблица в DB1 имела связь с таблицей в DB2 , они должны будут ссылаться друг на друга через запись ApplicationName (фактически через ApplicationID), который будет действовать как внешний / первичный ключ.
Но дело в том, что ни одно из полей внешнего ключа в таблицах DB1 не содержит значения, равного SqlMembershipProvider.ApplicationID = 100 , что предполагает, что между установленными отношениями нет таблицы в DB1 и DB2 (я знаю, что это не так, поскольку я могу назначать пользователей ролям). Так чего мне не хватает?
1076 * спасибо *
EDIT:
Э-э, не знаю, будет ли кто-нибудь еще читать это, но я еще немного покопался и запутался:
Если обе роли (с applicationName = R1 и applicationID = 10 ) и поставщик членства (с applicationName = M1 и с ApplicationID = 100 ) находятся в той же БД, затем создание нового пользователя вызывает aspnet_Users В таблице два создаются две записи для одного и того же имени пользователя - одна с ApplicationID = 10 , а другая с ApplicationID = 100 . Насколько я знаю, при создании нового пользователя в aspnet_Users должно быть добавлено только одно поле (с ApplicationID = 100 ). Э-э?!