sql >> データベース >  >> RDS >> Sqlserver

既存のデータベース ファースト EF モデルで MVC 4 SimpleMembership を使用する

    参考までに、ASP.NET MVC 4 Web アプリケーション プロジェクトの新しいインターネット アプリケーション テンプレートを作成することをお勧めします (つまり、[ファイル]> [新しいプロジェクト] を使用)。

    AccountController を見ると 、@ zms6445 が言うように、それは InitializeSimpleMembership で装飾されています 属性。この属性の実装は、ルート ディレクトリ内の Filters フォルダーにある InitializeSimpleMembershipAttribute.cs ファイルにあります。

    ここでは、これがパズルの欠けている部分です。SimpleMembershipProvider によって使用されるように、既存のデータベースを接続する必要があります。 .必要なコードは次のとおりです:

    private class SimpleMembershipInitializer
    {
        public SimpleMembershipInitializer()
        {
            try
            {
                if (!WebSecurity.Initialized)
                {
                    WebSecurity.InitializeDatabaseConnection("CONNECTION_STRING_NAME", "USER_TABLE", "USER_ID_FIELD", "USER_NAME_FIELD", autoCreateTables: true);
                }
            }
            catch (Exception ex)
            {
                throw new InvalidOperationException("Something is wrong", ex);
            }
        }
    }
    

    注意事項:

    <オール> <リ>

    CONNECTION_STRING_NAME は web.config ConnectionStrings のエントリです - ここでモデル接続文字列を使用することはできません - SimpleMembershipProvider はその形式を認識しません! System.Data.SqlClient を指定する必要があります 接続文字列。

    <リ>

    USER_TABLE 姓名などの追加のユーザー情報を保持するためのデータベース内のテーブルです。これは、USER_ID_FIELD を介して自動生成されたテーブルにリンクされています。

    <リ>

    USER_ID_FIELD 通常、Users テーブルの主キーです。 int 型でなければなりません .

    <リ>

    USER_ID_NAME ユーザーの一意の名前で、電子メール アドレスの場合もあります。

    <リ>

    autoCreateTables true に設定されています SimpleMembership が機能するために必要なテーブルがまだ存在しない場合に作成されるようにします。

    もちろん、このコードは AccountController 経由でページにアクセスした場合にのみ実行されます 、これは属性によって装飾されているためです。そこにブレークポイントを置いて、動作を確認できます。

    これで作業を開始できます。行き詰まった場合は、インターネット アプリケーション テンプレートに従うとよいでしょう。

    これがお役に立てば幸いです。



    1. バイナリログに書き込まずにMYSQLでクエリを実行するにはどうすればよいですか?

    2. Rails Migration(MySQL)で、新しい列の位置を指定できますか?

    3. MariaDBでのEXPORT_SET()のしくみ

    4. SQL Serverの特定のテーブルを参照するすべての外部キーを一覧表示するにはどうすればよいですか?