2010-11-30 9 views
3

長時間のリスナー、初めての発信者!共有ホスティング+エンティティフレームワーク+ MySQL =データプロバイダエラー?

私はADO.NETエンティティフレームワークを使用してMySQLに接続しようとしています。 (Visual Studio 2010、.NET 4.0)DALとして機能するWebプロジェクトと別のクラスライブラリプロジェクトを作成しました。私のローカルマシンでは問題はありません。また、ミディアムトラストで実行しようとしました。私は期待どおりにDBを完全に制御することができます。

しかし、ホスト(共有、中信頼)にデプロイすると、エラーが発生します。私は私のweb.configファイルの複数の方法を微調整している:私は明示的に接続文字列に私のアセンブリを呼んでいる、私はワイルドカードマッピングを使用してきました、私はMySQLのdllファイルのへの参照を追加、など


<connectionStrings> 
    <add name="NamespaceContext" connectionString="metadata=res:// Namespace.Data.Model, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null/DataModel.csdl|res:// Namespace.Data.Model, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null/DataModel.ssdl|res:// Namespace.Data.Model, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null/DataModel.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=myserver;User Id=user;database=thedatabase;password=password;Persist Security Info=True&quot;" providerName="System.Data.EntityClient"/> 
    <add name=" NamespaceContext " connectionString="metadata=res://*/;provider=MySql.Data.MySqlClient;provider connection string=&quot; server=myserver;User Id=user;database=thedatabase;password=password;Persist Security Info=True&quot;" providerName="System.Data.EntityClient"/> 
     <add name=" NamespaceContext " connectionString="metadata=res://*/DataModel.csdl|res://*/DataModel.ssdl|res://*/DataModel.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot; server=myserver;User Id=user;database=thedatabase;password=password;Persist Security Info=True&quot;" providerName="System.Data.EntityClient" /> 
</connectionStrings> 

私は入れませんエラーは、次のとおりです。

System.ArgumentException: The specified store provider cannot be found in the configuration, or is not valid. ---> 
System.ArgumentException: Unable to find the requested .Net Framework Data Provider. It may not be installed. 
at System.Data.Common.DbProviderFactories.GetFactory(String providerInvariantName) 
at System.Data.EntityClient.EntityConnection.GetFactory(String providerString) 
--- End of inner exception stack trace --- 
at System.Data.EntityClient.EntityConnection.GetFactory(String providerString) 
at System.Data.EntityClient.EntityConnection.ChangeConnectionString(String newConnectionString) 
at System.Data.EntityClient.EntityConnection..ctor(String connectionString) 
at MyNamespace.Web.Html.TestPage.EntityFrameworkTestButton_Click(Object sender, EventArgs e) 

私は(開発者ではない)彼らのサポートの連中に話したが、彼らは、MySQLコネクタがインストールされていると述べたとGACに。私は、次のように、私のweb.configファイルにDbProviderFactoriesセクションを使用してみました:私はこれを制御し、私のプロジェクトでは、プロバイダを参照することができ期待していた

<system.data> 
    <DbProviderFactories> 
     <clear/> 
     <remove invariant="MySql.Data.MySqlClient"/> 
     <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.3.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/> 
    </DbProviderFactories> 
    </system.data> 

System.Data.MetadataException: Schema specified is not valid. 
Errors: error 0194: All artifacts loaded into an ItemCollection must have the same version. Multiple versions were encountered. 
MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(4,9) : error 0169: All SSDL artifacts must target the same provider. The ProviderManifestToken '5' is different from '5.0' that was encountered earlier. 
error 0194: All artifacts loaded into an ItemCollection must have the same version. 

(同じエラーメッセージの多くは、簡潔にするために切り取られた)、私は完全に途方に暮れています


:私は次のエラーを受け取ります。 DALを使わず、ウェブプロジェクトで.edmxを作成するだけで、私のDALプロジェクトに強く署名しました。私はそれが何らかの時点で働いていると誓っていたかもしれませんが、たぶん私は狂っていました。

大変申し訳ありません。誰も助けたり、光を放つことができますか?

ありがとうございます!

答えて

0

binフォルダにmysql dllを置くとどうなりますか?あるいは、mysql dllのバージョン制限を削除しようとすると、そのバージョンがサーバにロードされていない可能性があります。

+0

私はdllを私のbinディレクトリに入れましたが、運はありません。バージョン制限を削除するにはどうすればよいですか?私がクリアして削除したら、私のバージョンを使用できるようにするべきでしょうか? –

+0

完全なバージョンデータを指定するのではなく、type = "MySql.Data.MySqlClient.MySqlClientFactory、MySql.Data"を使用してください。 VSの設定を特定のバージョンに対して構築しないように変更する – Cine

+0

Huzzah!私は何かに私の頭を叩いていたと信じることができないので、とても簡単!おかげさまで、あなたは単純にバージョンを離れることはできないと思いました! –

0

私はMySQLデータベース用のMySQLコネクタと、SQL Serverデータベース用のEntity Framework(2つの別々の接続、1つのプロジェクト)を使用していたアプリケーションで非常に似た問題がありました。 MySQL.Data.Entity DLLはエンティティフレームワークと戦うようです。私は実際にそれを必要としなかったので、私はそれを削除しました...しかし、エラーは持続しました!

最後に私は自分のbinとobjフォルダを削除し、再コンパイルしました。問題が解決しました。私はクリーンで再構築した後でも、何かがキャッシュされたり、自分のフォルダにぶら下がったりしているようだ。誰か他の人がこの問題に遭遇しても、何とかしようとするもの。

関連する問題