web-dev-qa-db-ja.com

ASP.NET MVC 3-要求された.Net Frameworkデータプロバイダーが見つかりません

Background-info:

Microsoft Visual Web Developer 2010 Expressを使用しています。
経験(不足)に関する情報:問題は、私が取り組んでいる最初のチュートリアル内で発生しました。

いくつかの追加情報:

  • C#、Postgres、Rails(MVCとWebアプリは私にとって新しいものではありません)に慣れています)
  • ASP.NETまたはSQL Serverでnoの経験がある

問題の説明:

"ASP.NET MVC 3の概要" -tutorialの手順を正確に実行しようとしていますが、 パート5の最初の手順-追加MoviesController:

チュートリアルに示されている正確な設定で「MoviesController」を追加して「追加」をクリックすると、次のエラーが表示されます。

「MvcMovie.Models.Movieのメタデータを取得できません。要求された.Net Framework Data Providerが見つかりません。インストールされていない可能性があります。」

Googleは「要求された.Net Frameworkデータプロバイダーを見つけることができません」というフレーズを検索したときに多くの結果を出しましたが、これまでのところ問題は解決していません。

私が試したこと:

SQL-Serverがインストールされていないと思うので、Visual-Studio Express ISOからインストールしました-エラーが発生した後、ISOから修復を実行し、SQL Server Expressの修復と.NET 4 Frameworkを含む15点すべてを主張しました成功しました。

すべてに成功したThe_.NET_Framework_Setup_Verification_Toolを実行しました。 http://blogs.msdn.com/b/astebner/archive/2008/10/13/8999004.aspx

前述の(再)インストールと修復の後、プロジェクトを再作成し、チュートリアルで説明されているすべての手順を実行し、同じエラーが発生しました。

Machine.configでDbProviderFactoriesを探す必要があることがわかりました。

プロジェクトのroot-Web.configには次のエントリがあります

  <connectionStrings>
    <add name="MovieDBContext"
     connectionString="Data Source=|DataDirectory|Movies.sdf"
     providerName="System.Data.SqlServerCe.4.0"/>

私のマシン構成ファイルには、DbProviderFactoriesエントリが1つしかありません。

<DbProviderFactories>
<add name="Microsoft SQL Server Compact Data Provider" invariant="System.Data.SqlServerCe.3.5" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=3.5.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/></DbProviderFactories>

その後、私は次の引用を見つけました

「DbProviderFactories.GetFactoryClasses()がVS2010でフレームワークプロバイダーを決定する方法を変更しました。これらはmachine.configファイルにリストされなくなりました。」

から http://social.msdn.Microsoft.com/Forums/en-ZA/adodotnetdataproviders/thread/d79129c4-ae05-4c45-8997-bd90f5765a3a

質問:

だからおそらくこれは間違った方向であり、次に何を試すべきか分からないので、この問題を調査して解決するためにどのような手順を取るべきですか?
ところで。 postgresがインストールされているので、SQL-serverの代わりにpostgresを使用するのが簡単な解決策となる場合はお知らせください。私のプロジェクトでは、とにかく別のDB(おそらくpostgres)を使用したいと思いますが、今のところは、私が試した最初の、一見単純なチュートリアルを成功させたいだけです。

55
Jennifer Owens

私は同じ問題を抱えていたので交換しました

<add name="MovieDBContext"     connectionString="Data Source=|DataDirectory|Movies.sdf"
providerName="System.Data.SqlServerCe.4.0"/>

次の

<add name="MovieDBContext"
     connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;database=Movies;User ID=sa;password="
     providerName="System.Data.SqlClient"/>

そして、それは私が仕事を続けられるように十分に働きました。私も最終的にこれらの種類のアプリケーションをある時点でmysqlで動作させる方法を学びますが、今のところこれは少なくともチュートリアルを続けるのに役立つはずです。

56
fattyman

Microsoft SQL Server Compact 4. をインストールする必要があります。

42
saille

構成を見ると、SQL Serverのインストールが赤いニシンであることがわかります。

<add name="MovieDBContext"
 connectionString="Data Source=|DataDirectory|Movies.sdf"
 providerName="System.Data.SqlServerCe.4.0"/>

SqlServerCEは、私は怖い、本格的なSQL Serverではなく、 SQL Server Compact Edition です。私はVS Expressでインストールされると思っていたでしょうが、特定のインストーラーは here からダウンロードできます

実際にSQLServerCEとExpressの両方をインストールしましたが、チュートリアルではCompact Editionを使用しました: チュートリアルのパート4の1つのステップ は、引用した部分をWeb.configに明示的に追加することです。したがって、これは意図的にweb.configの一部です。

ただし、web.configからこの部分を削除すると、チュートリアルで説明した方法でコントローラーを追加できます。これは、チュートリアルに従って厳密にでなくなったことを意味しますが、私にとっては問題ありません。 (これにより、SQL Server ExpressにMvcMovie.Models.MovieDBContextデータベースが作成されます。)

7
blowdart

プロジェクトを再構築すると、DBContextセクションで設定エラーが検出されません...構築プロセスは接続を経由しないため、1日中構築しても爆撃を続けることができます。上記のように、接続文字列がMachineName/SQLInstanceName/DBNameと正しいSQL構成に一致するように構成を修正します。ソリューションのweb.configを変更するだけでうまくいきました。

1
Aaron Lee

システムにSQLクライアントとSQL Compactがインストールされているため、web.configでSQL providerName = "System.Data.SqlClient"を変更しました。

1
vasu

http://forums.asp.net/t/1679349.aspx/1 CypressBender

Re:のメタデータを取得できません*要求された.Net Framework Data Providerが見つかりません。2011年8月8日07:44 PM | LINK

Microsoft SQL Server Compact 4.0をインストールすると、問題は解決しました。 http://www.Microsoft.com/download/en/details.aspx?id=17876

1
Alexis
  1. コントローラーを追加する前にビルドしてください。それがうまくいかない場合...
  2. 新しいプロジェクトを作成し、新しいsqlサーバーデータベースを手動で作成して、接続できるかどうかを確認します。そうでない場合、問題は実際にマシンのSQLサーバー設定にあります。選択したプロバイダーが最初にEFコードをサポートしていることを確認してからpostgresにアクセスしてみてください。
0
theoretical

Microsoft SQL Server Compact 4.0をインストールします。同じリンクは- http://www.Microsoft.com/en-us/download/details.aspx?id=17876

これは私のために働いた、それが役立つことを願って

<add name="MovieDBContext"
     connectionString="Data Source=(local);Initial Catalog=Movies; Integrated Security=true;"    providerName="System.Data.SqlClient" />
</connectionStrings>
0
user2149040

サーバーがありました。 Windowsアップデートを実行しました。そして、再起動を待っているメッセージが開かれました。再起動後、再び機能しました。

0
Per G

これを試して:

<add name="MovieDBContext"
     connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|Movies.sdf;User Instance=true"
     providerName="System.Data.SqlClient" />

ウェブに関する他の議論を読んだ後、別の方法を見つけました。コントローラクラスを作成するまで接続文字列を追加しない場合、それも機能します。それは一種のバグのようです。

0
Charaf JRA

私がやったのは、Web.configにコードを入れた最初の問題を克服するためでした:

 <add name="MovieDBContext"
     connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Movies.sdf;Integrated Security=True"
   providerName="System.Data.SqlClient"/>

SQL CE 4データベースを作成していることに注意してください。したがって、.mdfではなく.sdfを作成します。

次に、ページ/ Moviesで別の接続エラーが表示されるので、上記のコードを次のように置き換えます。

<add name="MovieDBContext"
     connectionString="Data Source=|DataDirectory|\Movies.sdf;"
   providerName="System.Data.SqlServerCe.4.0"  />

そして、あなたは元気でなければなりません。

0
Jim