Sto scrivendo un'applicazione C# che utilizza file SQL Server CE 4.0, ai quali si accede tramite Entity Framework 6.0 tramite codice prima. (L'applicazione deve essere in grado di utilizzare le DLL locali per la connessione SQL Server CE, ovvero l'applicazione deve essere distribuita XCOPY). L'applicazione funziona bene sulla mia macchina di sviluppo, ma su altre macchine (ad esempio VM con un solo Win7 e .NET 4.0), ottengo un ArgumentException
:Codice Entità Framewok Primo "Provider ADO.NET non trovato" con DLL SQL Server CE locali
Il provider ADO.NET con nome invariante 'System.Data.SqlServerCe .4.0 'non è registrato nel file di configurazione della macchina o dell'applicazione, o non può essere caricato. Vedi l'eccezione interna per i dettagli.
Il messaggio di eccezione interna dice:
Impossibile trovare il richiesto provider di dati .NET Framework. Non può essere installato.
Ho cercato Google e SO e la maggior parte dei commenti indica che il file App.config è corretto. Credo che il mio è (fabbrica di connessione predefinita e sezioni provider), ma qui ci sono i contenuti:
<?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" />
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
</startup>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlCeConnectionFactory, EntityFramework">
<parameters>
<parameter value="System.Data.SqlServerCe.4.0" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="System.Data.SqlServerCe.4.0" type="System.Data.Entity.SqlServerCompact.SqlCeProviderServices, EntityFramework.SqlServerCompact" />
</providers>
</entityFramework>
</configuration>
La cartella di build include i seguenti file (in aggiunta ai file specifici dell'applicazione, ovviamente):
- EntityFramework.dll
- EntityFramework.xml
- EntityFramework.SqlServer.dll
- EntityFramework.SqlServer.xml 012.351.641.061.
- EntityFramework.SqlServerCompact.dll
- EntityFramework.SqlServerCompact.xml
In ciascuna delle amd64 e x86 sottocartelle sono i seguenti file:
- sqlceca40.dll
- sqlcecompact40.dll
- sqlceer40EN.dll
- sqlceme40.dll
- sqlceqp40.dll
- sqlcese40.dll
Sono certo il programma viene eseguito sulla macchina di sviluppo perché SQL Server CE è stato installato, ma come faccio a farlo funzionare utilizzando solo del locale dll SQL Server CE sulla altre macchine?
Vedere il mio post del blog qui: http://erikej.blogspot.dk/2013/11/entity-framework-6-sql-server-compact-4_25.html – ErikEJ
ErikEJ: Ho perso il tuo commento e sono andato alle risposte , ma sembra che tu abbia anche la risposta. Questo sembra un tutorial completo per chiunque partendo da zero. – Tim
@ErikEJ dopo l'aggiornamento a .net framework 4.5.2 il progetto si interrompe. p.s Ho scaricato il tuo progetto e questo dà lo stesso errore – Shekhar