は、私は、ユーザーを作成して、などの役割に割り当てる方法を知っている関係を確立する方法について混乱が、私は役割やメンバーシップのテーブルができますどのように深くビットを掘るしようとしたとき、互いの間の関係を確立するために、私は(ところで - 私は、キーがどのように動作するかの外国/主を知っています;)完全に失われてしまった)
をところで - 私はaspnet_sqlregウィザード
Q1 - SqlRolesProviderとSqlMemebershipProvider両方がプロパティのApplicationNameを有します。私は、2つのプロバイダーがユーザーと役割の関連付けを作成できるようにするには、両方ともApplicationNameプロパティに同じ値を使用する必要があると考えました。しかし、それはそうではないようです。
A)とにかく、私はSqlRolesProvider.ApplicationNameプロパティが異なるだけ役割プロバイダーに属するテーブルエントリを区別するために使用されているが、彼らは唯一で、メンバーシッププロバイダーとその役割を関連付けるためにそのプロパティを使用していないことを前提としてい同じアプリケーション名値?
B)しかし、ロールプロバイダが同じApplicationNameの値(したがって、SqlRolesProvider.ApplicationName == SqlMemebershipProvider.ApplicationName
)のメンバーシッププロバイダとしか関連付けることはできません。
Q2 - 私はまた、ロールプロバイダがDB1に接続された場合、メンバシッププロバイダがDB2に接続している間にロールと、ユーザーは、関連することができるかどうか骨董ました。どういうわけか、ロールが別のデータベースで定義されていても、ユーザーをさまざまなロールに割り当てることができました。
A)しかし、なぜそれは何ですか?すなわち、SqlRolesProvider.ApplicationName =「rolesP」(= 10アプリケーションID)とSqlMembershipProvider.ApplicationName =「会員」(= 100アプリケーションID)は、次いで、DB1のテーブルために関係を持っている場合DB2のテーブルと、両者は一次/外部キーとして作用する(実際にアプリケーションIDを介して)のApplicationNameエントリを介して相互に参照しなければなりません。
しかし、事はDB1のテーブルの外部キーフィールドのいずれもSqlMembershipProviderに等しい値を保持していない、です。ApplicationID = 100となり、テーブル間に関係が確立されていないことが示唆されます。DB1と(私はユーザーがロールに割り当てられているので、そうではないことがわかります)それで私は何が欠けているのですか?
ありがとう
EDIT:誰もが、まだこれを読んする場合は
ええとが、わかりませんが、私はいくつかのより多くの掘りやったとさえなりましたもっと混乱している:
両方の役割(のapplicationName = R1とアプリケーションID = 10)及びメンバシッププロバイダ()のapplicationName = M1有するとアプリケーションID = 100と同じDBで、新しいユーザを作成するaspnet_Usersテーブル二つのために2つのエントリを作成する原因となっています同じユーザー名 - 一方はApplicationID = 10で、その他はApplicationID = 100です。私が知る限り、新しいユーザーが作成されると、aspnet_Usersに1つのフィールド(ApplicationID = 100)を追加する必要があります。え?
ここにデータベースのスキーマがあります:http://webthinker.wordpress.com/2007/11/21/aspnet-membership-schema/ – Greg