2012-04-01 223 views
0

私はEntity FrameworkコードファーストでASP.NET MVC 3で動作するアプリケーションを持っています。開発中はSQL Compactデータベースを使用していましたが、これを仮想サーバーに移動するとSQL Expressを対象としています。要求された.Net Frameworkデータプロバイダが見つかりません。インストールされていない可能性があります

最初にSQLコンパイルデータベースからSQLスクリプトにモデルを抽出し、それをサーバー上で実行してDBを作成することで、「マスターでCREATE DATABASE in master」エラーが発生しました。

私はEFの形式を使用してSQL Expressインスタンス、を指すように新しい接続文字列を作成しました:

<add name="LouiseClarkEntities" connectionString="metadata=res://*/Models.LouiseClark.csdl|res://*/Models.LouiseClark.ssdl|res://*/Models.LouiseClark.msl;provider=System.Data.EntityClient;provider connection string=&quot;Data Source=.\SQLEXPRESS; Initial Catalog=LouiseClark; User ID=<username>; Password=<password>&quot;" providerName="System.Data.EntityClient" /> 

DBを使用するページに移動するとき、私は今取得していますエラー、次のとおりです。

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

私が試してみて、これで問題が解決するかどうかを確認するために、サーバー上のエンティティフレームワーク4.1をインストールしましたが、非常に良いを行うにはいないようでした。

エラーページのスタックトレースからの抜粋:

[ArgumentException: Unable to find the requested .Net Framework Data Provider. It may not be installed.] 
    System.Data.Common.DbProviderFactories.GetFactory(String providerInvariantName) +1420567 
    System.Data.EntityClient.EntityConnection.GetFactory(String providerString) +35 

[ArgumentException: The specified store provider cannot be found in the configuration, or is not valid.] 

これは今日のために私を盗聴されているようにすべてのヘルプは、いただければ幸いです!

おかげで、

クリス

答えて

0

は、最初のコードで通常の接続文字列を使用します。あなたの第二の問題で

<add name="LouiseClarkEntities" connectionString="Data Source=.\SQLEXPRESS; Initial Catalog=LouiseClark; User ID=<username>; Password=<password>" providerName="System.Data.SqlClient" /> 
+0

ありがとう@Erangaしかし、私のカスタムイニシャライザの 'context.Database.CompatibleWithModel(false)'コールがfalseを返すようになりました。私は、開発DBからサーバーにメタデータテーブルをコピーし、テーブルが一致しています。 – Chris

0

、そして部分的に第一の原因は、あまりにも...あなたは間違って何をしたか

はあなたがそのための移行スクリプトを使用する必要がありますwhich I got around by extracting the model from the SQL Compact database into an SQL script and executing that on the server to create the DB.

である - とPMコンソールで使用Update-Database -Scriptを実行して、必要なものをダンプしてからサーバーデータベースに展開します。

問題は、CFに独自のテーブルとデータがあり、正しく初期化する必要があるということです。それが一致しない場合は、そのようなもので終わるでしょう。

関連する問題

 関連する問題