Background-info:
Microsoft Visual Web Developer 2010 Expressを使用しています。
経験(不足)に関する情報:問題は、私が取り組んでいる最初のチュートリアル内で発生しました。
いくつかの追加情報:
問題の説明:
"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ファイルにリストされなくなりました。」
質問:
だからおそらくこれは間違った方向であり、次に何を試すべきか分からないので、この問題を調査して解決するためにどのような手順を取るべきですか?
ところで。 postgresがインストールされているので、SQL-serverの代わりにpostgresを使用するのが簡単な解決策となる場合はお知らせください。私のプロジェクトでは、とにかく別のDB(おそらくpostgres)を使用したいと思いますが、今のところは、私が試した最初の、一見単純なチュートリアルを成功させたいだけです。
私は同じ問題を抱えていたので交換しました
<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で動作させる方法を学びますが、今のところこれは少なくともチュートリアルを続けるのに役立つはずです。
Microsoft SQL Server Compact 4. をインストールする必要があります。
構成を見ると、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データベースが作成されます。)
プロジェクトを再構築すると、DBContextセクションで設定エラーが検出されません...構築プロセスは接続を経由しないため、1日中構築しても爆撃を続けることができます。上記のように、接続文字列がMachineName/SQLInstanceName/DBNameと正しいSQL構成に一致するように構成を修正します。ソリューションのweb.configを変更するだけでうまくいきました。
システムにSQLクライアントとSQL Compactがインストールされているため、web.configでSQL providerName = "System.Data.SqlClient"を変更しました。
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
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>
サーバーがありました。 Windowsアップデートを実行しました。そして、再起動を待っているメッセージが開かれました。再起動後、再び機能しました。
これを試して:
<add name="MovieDBContext"
connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|Movies.sdf;User Instance=true"
providerName="System.Data.SqlClient" />
ウェブに関する他の議論を読んだ後、別の方法を見つけました。コントローラクラスを作成するまで接続文字列を追加しない場合、それも機能します。それは一種のバグのようです。
私がやったのは、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" />
そして、あなたは元気でなければなりません。