2017-08-28 11 views
1

EF6でVS2013を使用して作成されたアプリケーションがあります。エラー - 不変の名前 'System.Data.SQLite.EF6'を持つADO.NETプロバイダをロードできませんでした

すべてのマシンで正常に動作していますが、1台のマシンで正常に動作していません。

ローカルのsqliteデータベースファイルとやりとりするときにエラーが発生することがあります。

"System.InvalidOperationException:Entity Frameworkプロバイダーの種類 'System.Data.SQLite.EF6.SQLiteProviderServices、System.Data.SQLite.EF6'は、不変の名前が 'System'のADO.NETプロバイダーのアプリケーション構成ファイルに登録されています.Data.SQLite.EF6 'を読み込めませんでした。アセンブリで修飾された名前が使用され、アセンブリが実行中のアプリケーションで使用できることを確認してください。詳細については、http://go.microsoft.com/fwlink/?LinkId=260882を参照してください。

すべてのEF dllは、 "Copy Local = true"オプションでリファレンスに追加されます。マシンには.NET Framework 4.0が含まれています。

問題を解決するためにお手伝いください。

よろしく、

ハリ

追加設定ファイル:2つの別個の行が追加され

<?xml version="1.0" encoding="utf-8"?> <configuration> 
 
    <configSections> <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
 
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> 
 
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> 
 
    </configSections> 
 
    <startup> 
 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" /> 
 
    </startup> 
 
    <startup useLegacyV2RuntimeActivationPolicy="true"> 
 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" /> 
 
    </startup> 
 
    <startup useLegacyV2RuntimeActivationPolicy="true"> 
 
    <supportedRuntime version="v4.0" /> 
 
    </startup> 
 
    <entityFramework> 
 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> 
 
     <parameters> 
 
     <parameter value="v13.0" /> 
 
     </parameters> 
 
    </defaultConnectionFactory> 
 
    <providers> 
 
     <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> 
 
     <provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" /> 
 
    </providers> 
 
    </entityFramework> 
 
    <system.data> 
 
    <DbProviderFactories> 
 
     <remove invariant="System.Data.SQLite.EF6" /> 
 
     <add name="SQLite Data Provider (Entity Framework 6)" invariant="System.Data.SQLite.EF6" description=".NET Framework Data Provider for SQLite (Entity Framework 6)" type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" /> 
 
    </DbProviderFactories> 
 
    </system.data> 
 
    <runtime> 
 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
 
     <dependentAssembly> 
 
     <assemblyIdentity name="System" publicKeyToken="b77a5c561934e089" culture="neutral" /> 
 
     <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" /> 
 
     </dependentAssembly> 
 
     <dependentAssembly> 
 
     <assemblyIdentity name="System.Data" publicKeyToken="b77a5c561934e089" culture="neutral" /> 
 
     <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" /> 
 
     </dependentAssembly> 
 
     <dependentAssembly> 
 
     <assemblyIdentity name="System.Configuration" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> 
 
     <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" /> 
 
     </dependentAssembly> 
 
     <dependentAssembly> 
 
     <assemblyIdentity name="System.Xml" publicKeyToken="b77a5c561934e089" culture="neutral" /> 
 
     <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" /> 
 
     </dependentAssembly> 
 
     <dependentAssembly> 
 
     <assemblyIdentity name="System.Core" publicKeyToken="b77a5c561934e089" culture="neutral" /> 
 
     <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" /> 
 
     </dependentAssembly> 
 
     <dependentAssembly> 
 
     <assemblyIdentity name="System.Management" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> 
 
     <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" /> 
 
     </dependentAssembly> 
 
     <dependentAssembly> 
 
     <assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral" /> 
 
     <bindingRedirect oldVersion="0.0.0.0-4.4.0.0" newVersion="4.4.0.0" /> 
 
     </dependentAssembly> 
 
    </assemblyBinding> 
 
    </runtime> 
 
    <DbProviderFactories> 
 
    <remove invariant="System.Data.SQLite" /> 
 
    <add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" /> 
 
    </DbProviderFactories> 
 
<connectionStrings><add name="xxxx" connectionString="metadata=res://*/Entities.xxxx.csdl|res://*/Entities.xxxx.ssdl|res://*/Entities.xxxx.msl;provider=System.Data.SQLite.EF6;provider connection string=&quot;data source=C:\Users\Public\Documents\xxxx\xxxx\xxxx_Data.db3&quot;" providerName="System.Data.EntityClient" /></connectionStrings></configuration>

(コメントは、2つの行をマージする言及):

<add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" /> 
 

 
<provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />

我々は

invariantName = "System.Data.SQLite" タイプ= "System.Data.SQLite.EF6.SQLiteProviderServices、System.Data.SQLite.EF6" を言及する必要があるかどうかを明確にしてください

+0

ここにapp.config/web.configを表示してください。 SQLiteプロバイダインスタンスが既に登録されているかどうかを確認してください: '' –

答えて

0

System.Data.SQLiteで実験を始めたばかりのときに、同様のエラーメッセージが表示される& Entity Framework。 StackOverflowの多くの解答を読んで投稿をブロックした後、同様の問題に遭遇した人に役立つことを望むなら、ここに以下の情報を載せることにしました。

私の構成:

  1. *****データ - プロジェクトはEF-6に関連するコード(DbContext、移行など)が含まれ;この1つは必要なアセンブリを参照します:EntityFramework、System.Data.SQLite、System.Data.SQLite.EF6、System.Data.EF6.Migrations
  2. *****。data.tests - これは1番目のプロジェクトを参照します;

2番目のプロジェクトをビルドするときに、何らかの理由でSystem.Data.SQLite.EF6アセンブリが出力ディレクトリにコピーされません。

インターネットには、2番目の(ホスト)プロジェクトへの依存関係の追加からカスタムMSBuildアクションを使用してすべての依存関係を再帰的にコピーするまで、さまざまな回避策が用意されています。

私の場合、私は単純なアプローチをとることに決めました。あなたが「究極の」ソリューションが必要だと感じる場合は、カスタムMSBuildアクションを含むソリューションがここにあります:http://www.paraesthesia.com/archive/2014/05/09/recursively-copying-indirect-project-dependencies-in-msbuild.aspx/

関連する問題