2012-08-31 11 views
7

私はASP.NETメンバーシッププロバイダを使用しています。基本的な目的を果たしています。私が気づいていることの1つは、データベースにStored Procsなどの束をインストールすることです。EFを使用したASP.NETメンバーシッププロバイダ

ASP.NETメンバーシップのEF実装はありますか?またはそこにはありますか?

私は、いくつかのGUIを介してメンバーシッププロバイダの機能と権限を拡張する必要がある今後のプロジェクトがあります。

さらに、これを使用するたびに、web.configには、特にメンバーシッププロバイダのアプリケーションサービス用のDbContext用の接続文字列が2つあります。なぜ私はちょうど1つを持っていないのですか?

答えて

0

MVC3のGUI管理システムがあり、プロジェクトを見たり追加したりすることができます。

あなたは彼らと一緒に遊んで、彼らがどのように機能するかを見ることができます。見た目がわかれば自分のものを作ることができます。

Membership ClassおよびMembershipUser Classはすべてのユーザー情報を保持します。

MembershipUser user = Membership.GetUser("userName"); 
user.IsApproved = false; 
Membership.UpdateUser(user); 

そして、あなたはユーザーを削除したい場合は、あなたがMembership.DeleteUser("userName");を使用することができます。たとえばには、あなたがこれを行うことができ、ユーザを非承認します。

Roles Classにはすべての役割が関連付けられています。 Roles.GetUsersInRole("roleName")のように、ロールroleNameのすべてのユーザのリストを返します。 Roles.CreateRole("roleName");は役割を作成し、Roles.DeleteRole("roleName");は役割を削除します。

デフォルト以外のものが必要な場合は、Implementing a Membership Providerをご覧ください。

2つのデータベースを持つ限り、これは必須ではありません。 Aspnet_regsqlツールを使用すると、すべてのASP.NETテーブル、ストアドプロシージャなどをデータベースに追加できます。 Installing the Database using Aspnet_regsql.exeをご覧ください。これにより、データベースが1つしかないので、Web.Configのasp.net接続文字列を削除してから、AspNetSqlMembershipProviderAspNetSqlProfileProviderAspNetSqlRoleProviderなどを変更して、メインデータベースへの接続文字列を使用することができます。

0

ASP.NETメンバーシッププロバイダとEntity Frameworkのロール実装では、EDMXファイル内のASPNETDB(Membershipデータベース)のすべてのビューをインポートする必要があります。例えばvw_aspnet_MembershipUsers、vw_aspnet_Roles、vw_aspnet_UsersInRoles、vw_aspnet_Usersなど

次に、メンバーシップはEF経由で実行されます。したがって、以下の機能を使用してGUIを提供することができます。

ここはコントローラコードです。例えば

// GET: /Membership/Edit/5 

    public ActionResult Edit(Guid id) 
    { 
     var recordToEdit = (from r in _db.vw_aspnet_Users where r.UserId == id select r).First(); 
     return View(recordToEdit); 
    } 

    public ActionResult Index() 
    { 
     return View(_db.vw_aspnet_MembershipUsers.ToList()); 
    } 

は今、どのようにweb.configファイルで唯一の接続文字列を作るために、既存のデータベースへのASPNETDBをマージします。 (あなたの質問:なぜ私はちょうど1つを持っていないのですか?)

これは以下の手順でも可能です。

ASPNETDB.MDFは、メンバーシッププロバイダデータベースであり、 データベースのメンバーシップデータの格納および取得に使用されます。メンバーシッププロバイダデータベースの作成方法については、ここで説明します。 Aspnetdb.mdfを作成するコマンドは、ASPNET_RegSQL.EXEです。

1.Start-> Programs-> Microsoft Visual Studio 2005-> Visual Studio 2005-> Visual Studio 2005コマンドプロンプト。 Visual Studio 2005のコマンドプロンプト

  1. 「Asp.Net SQL Serverのウィザードへようこそ」という見出しでウィザードが表示されますでASPNET_RegSQL.EXEを入力します。ここをクリックしてください次へ

  2. 次の「セットアップオプションの選択」ウィザードが表示されます。ここで、セットアップオプション "アプリケーション目的のためのSQL Serverの設定はデフォルトです"を選択する必要があります。あなたが望むものと次のものを選択してください。

  3. 「Select Sql Server Database」のウィンドウが表示されます。次に、SQL Serverデータベースを選択する必要があります。ここでは、サーバー、認証タイプ、およびデータベースを設定する必要があります。 デフォルト名を選択すると、 "aspnetDb.mdf"が選択されます。既存のデータベースを変更する場合は、そのデータベースを選択します。

5.Now「Confirm your Settings」という見出しが表示されます。サーバー名とデータベース名を確認し、次へをクリックします。

  1. 「データベースが作成または変更されました」のウィンドウが表示されます。今完了

はあなたの既存のデータベースを選択する必要があり、上記の手順では注意してくださいをクリックして、メンバーシップとロールのいくつかのテーブル(11+)、ビュー、ストアドプロシージャは、既存のデータベースに追加されます....

お楽しみください....ありがとうございます...

+0

最初にDbContextコードを使用している場合はどうすればよいですか? – DarthVader

+0

コード1のアプローチでは、データベース上でExecuteSqlCommandメソッドを使用して、クエリ以外のコマンドをデータベースに送信できます。 context.Database.ExecuteSqlCommand( "<メンバーシップSQL>"); –

+0

よくSQLクエリまたはストアドprocsに興味がありません。誰がそれらをもう使用していますか? – DarthVader

2

ユニバーサルプロバイダは、あなたが探しているものです。http://nuget.org/packages/Microsoft.AspNet.Providers.Core

これらは、我々はすべてが順調に動作することを確認した後、我々は内部DBContextsがパブリック作ることになり、内部EFコードファースト5を使用して実装されています。

関連する問題