7

SQL Server (2005) からの DB の最初の移行を使用して、単純な ASP.NET MVC 4 webapp をセットアップしようとしています。データベースにテーブルを作成し、Entity Framework を使用してコード内にオブジェクトを作成しました。これらのオブジェクトを使用してデータにアクセスできます。

Global.asax.cs ファイルを使用して WebSecurity を初期化しようとすると、問題が発生しWebSecurity.InitializeDatabaseConnection("FLMREntities", "UserProfile", "UserId", "UserName", true);ます。テンプレートに付属の InitializeSimpleMembershipAttribute フィルターを使用してみましたが、同じ問題が発生しました。エラーメッセージが表示されます:

Unable to find the requested .Net Framework Data Provider. It may not be installed.

関連する接続文字列は次のとおりです。

<add name="FLMREntities"
     connectionString="metadata=res://*/Models.FLMR.csdl|res://*/Models.FLMR.ssdl|res://*/Models.FLMR.msl;
                    provider=System.Data.SqlClient;
                    provider connection string=&quot;data source=notes.marietta.edu;
                        initial catalog=muskwater;
                        user id=muskwater;password=********;
                        MultipleActiveResultSets=True;
                        App=EntityFramework&quot;" 
     providerName="System.Data.EntityClient" />

また、テンプレートが作成するものと一致するように、データベースにメンバーシップ テーブルを作成しました。Initialize 呼び出しの最後のパラメーターを false に変更すると (テーブルを自動的に作成しないようにするため)、UserProfile テーブルが見つからないことが返されます。[dbo].[UserProfile] など、名前のバリエーションも試しました。

必要なのは、ユーザーがログインできるようにし、特定のユーザーがより多くのコンテンツを表示できるようにする単純なアカウント モデルを用意することだけです。

4

3 に答える 3

1

これは、このの複製である可能性があります。

この問題について私が覚えていることから、sqldata プロバイダーが登録されていることを確認する必要があります。場合によっては、machine.config に削除する必要がある重複したエントリがあり、私の記憶が正しければ、削除する必要がある誤ったエントリがある可能性があります。この msdn postを見てください。これに関する情報は、ページの半分ほど下にあります。

他の SO へのリンクには、役立つリンクがいくつかあります。これが重複した質問としてマークされない場合は、ここにそれらを追加するか、適切なことを行うことができます。

探しているセクションは次のようになります。

<system.data>
  <DbProviderFactories>
    <add name="SqlClient Data Provider"
     invariant="System.Data.SqlClient" 
     description=".Net Framework Data Provider for SqlServer" 
     type="System.Data.SqlClient.SqlClientFactory, System.Data, 
     Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
    />
  </DbProviderFactories>
</system.data>

コメントで提供された情報から、これが machine.config にないようです。私が間違っていない限り(可能性があります)、SQLプロバイダーがマシンに登録されていないことを意味します。上記のセクションを web.config に追加する必要があります。また、プロジェクトで System.Data.SqlClient が参照されていることを確認する必要があります。

これがターゲット マシンにインストールされていない場合は、インストールするためにさらに作業が必要になります。もっとお手伝いできればいいのですが、これをやったときはSqlServerCE用だったので、使ったファイルがかなり違います。

幸運を!

編集:重要な情報は、バージョンが使用しているファイルと一致する必要があることです。in type="blabh..blah..blah..Version=2.0.0.0, blah blah" は、使用しているファイルのバージョンである必要があるため、ファイルを右クリックしてファイルのバージョンを取得します。失敗した場合は、バージョンのバリエーションを試してください。私のファイルは 2.0.0.1 だったと思いますが、Version=2.0 は私が実行したときに機能したものです。バージョン番号 (たとえば、2.0、2.0.0、2.0.0.1) に基づいて、いくつかの異なるバージョンを試してみてください。

于 2013-03-04T16:49:30.047 に答える
0

ここで、私が実行していた対象の .NET バージョンの machine.config を見て、この問題が発生したことを知らせたいと思いました... 構造内:

対象のデータプロバイダーがそこに正しく入力されていることを確認し、プロバイダーごとに1つだけ(重複が問題を引き起こすのを見てきました)、有効なXMLであること、およびDBProviderFactoriesエントリが1つだけであることを確認してください。私の場合、最初のエントリの後にエントリがあり (基本的に 2 つのエントリ、1 つはプロバイダー、もう 1 つは空白)、空白がすべての問題の原因でした。

これが同じ問題を抱えている人に役立つことを願っています:)

于 2013-10-03T00:28:25.450 に答える