ASP.NETメンバーシッププロバイダーの拡張、PK == FK == OK?
-
05-07-2019 - |
質問
SQLMembershipProviderを使用していますが、ユーザーに関する詳細情報を追加したいです。これを実行して新しいDBを作成し、作成された新しいユーザーごとにエントリを作成するのが最善の方法ですか?その場合、新しいデータベースのユーザーテーブルでSQLMembershipProvider UserID値をPKとして使用しない理由はありますか?
または、新しいDBに新しいUserIDを作成し、SQLMembershipProvider UserIDをFKとして使用する理由はありますか?
解決
それがうまくいかない理由や、なぜそうしないべきなのか考えられません(PKとしてのユーザーID)
すべてに個別のデータベースを使用する理由がわかりません。おそらく現在のデータベースにテーブルを作成し、ユーザーIDをaspnet_usersテーブルのFKとして使用してセットアップするだけです。
他のヒント
メンバーシッププロバイダーを書き換える場合、すべてのPK列をGUIDからBITINTに切り替えます。これには2つの理由があります。 1つの連続番号は操作と理解がはるかに簡単で、2つ目はGUID IDの代わりにBIGINTを使用することによるパフォーマンス上の利点があります。また、アプリケーション内の他のテーブルを好きなように使用できる独自のid列を使用し、デフォルトでSQLメンバーシッププロバイダーにあるテーブルを削除します。これを行うには、プロバイダーの各関数にコードを提供する必要があります。小さなタスクではありません。
既存のデータベーススキーマのラッパーを作成しました。追加のプロパティを含む MembershipUser
から派生したクラスと、派生 MembershipUser
クラス。
メンバーシップ認証および更新メソッドのみを使用します。他のサポートAPIが多少制限されているためです。管理用のユーザーAPIを個別に作成/編集しています。
このソリューションは現在いくつかのサイトで使用されており、うまく機能しています。