SimpleMembershipはEFモデルファーストで使用できますか?試してみると、電話をかけると「要求された.NETFrameworkデータプロバイダーが見つかりません」と表示されます。WebSecurity.InitializeDatabaseConnection.
別の言い方をすれWebSecurity.InitializeDatabaseConnection
ば、接続文字列がSystem.Data.EntityClient
プロバイダーを使用している場合(モデルファーストパラダイムを使用している場合のように)、呼び出しを機能させることができません。
問題を再現するには、MVC 4アプリを作成し、コードファーストのUserProfileエンティティクラス(MVC 4テンプレートで無料で入手できます)を、エンティティデザイナーで作成したモデルファーストのユーザークラスに置き換えます。
- VS2012でMVC4アプリを作成し、新しい空のエンティティデータモデルを追加します。
User
のフィールドを使用して、モデルに名前が付けられた新しいエンティティを追加しますId,
UserName, and FullName
。したがって、この時点で、User
データエンティティはテーブルにマップされ、プロバイダーUsers
を使用するファンキーな接続文字列を介してアクセスされます。System.Data.EntityClient
- EF
User
がエンティティにアクセスできることを確認します。これを行う簡単な方法の1つは、Userテーブルとそれに関連付けられたDbContextに基づいてUsersコントローラーをスキャフォールディングすることです。 - ファイルを編集して、クラスとそれに関連するクラス
AccountModels.cs
を削除します。(現在欠落している)クラスへの参照を、新しいUserクラスとそれに関連するクラスへの参照に置き換えます。UserProfile
UsersContext
UserProfile
UsersContext
DbContext
- InitializeDatabaseConnectionの呼び出しをInitializeSimpleMembershipAttributeフィルタークラスからGlobal.asax.csのApplication_Startメソッドに移動します。その間に、新しいUserエンティティの接続文字列、テーブル名、およびUserId列名を使用するように引数を変更します。
- (使用されなくなった)
InitializeSimpleMembershipAttribute
クラスとそのクラスへの参照を削除します。
再現を実行すると、への呼び出し時に例外が発生しますInitializeDatabaseConnection.
ボブ