Entité Framewok le Premier Code “ADO.NET le fournisseur n'est pas trouvé” locale de SQL Server CE DLL
Je suis en train d'écrire une application en C# qui utilise SQL Server CE 4.0 fichiers, qui sont accessibles via Entity Framework 6.0 via le code-première. (L'application doit être en mesure d'utiliser les dll for SQL Server CE connexion c'est à dire l'application doit être XCOPY déployable). L'application fonctionne très bien sur ma machine de développement, mais sur d'autres machines (par exemple, VMs avec juste Win7 et .NET 4.0), je reçois un ArgumentException
:
L'ADO.NET fournisseur de invariante nom de "Système".Les données.SqlServerCe.4.0' est pas enregistré dans la machine ou le fichier de config, ou n'a pas pu être chargé. Voir l'exception interne pour plus de détails.
L'exception interne message dit:
Incapable de trouver la demande .Net Framework Fournisseur De Données. Il ne peut pas être installé.
J'ai cherché sur Google et SI la plupart de ces commentaires indiquent assurer l'Application.fichier de configuration est correcte. Je crois que le mien est (connexion par défaut d'usine et fournisseur d'articles), mais en voici le contenu:
<?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>
Le dossier de génération comprend les fichiers suivants (en plus de l'application fichiers spécifiques, bien sûr):
- EntityFramework.dll
- EntityFramework.xml
- EntityFramework.SqlServer.dll
- EntityFramework.SqlServer.xml
- EntityFramework.SqlServerCompact.dll
- EntityFramework.SqlServerCompact.xml
Dans chacun des x86, amd64 et sous-dossiers sont les fichiers suivants:
- sqlceca40.dll
- sqlcecompact40.dll
- sqlceer40EN.dll
- sqlceme40.dll
- sqlceqp40.dll
- sqlcese40.dll
Je suis certain que le programme s'exécute sur la machine de développement, car SQL Server CE qui a été installé, mais comment puis-je le faire fonctionner à l'aide de seulement locale de SQL Server CE dll sur d'autres machines?
ErikEJ: j'ai raté votre commentaire et suis allé à la les réponses, mais il semble que vous avez la réponse. Cela ressemble à un tutoriel complet pour quiconque de commencer à partir de zéro.
après la mise à jour .net framework 4.5.2 le projet de pauses. p.s j'ai téléchargé votre projet et qui donne la même erreur aussi
avez-vous utiliser mon approche mise à jour?
non, je didnot, ressemble pourrait aider. merci
OriginalL'auteur Tim | 2013-12-13
Vous devez vous connecter pour publier un commentaire.
Voir http://tech.aendeavors.com/2011/06/09/bin-deploy-sqlce-4-0-and-ef-4-1/
Il semble pertinent de bits, vous pourriez être manquant:
Assurez-vous que le Système.Les données.SqlServerCe est référencé et mis à "Copier
locaux" dans les propriétés.
Ajouter les éléments suivants à l'app.config:
Je confirme le commentaire ci-dessus
OriginalL'auteur nekno
J'ai été confrontée au même problème aujourd'hui.
Après la réinstallation de EF à plusieurs reprises, ce qui a résolu mon problème était de référencement EF dans mon projet de Console avec le DAL projet (celui qui utilise EF).
Si vous utilisez une référence qui, à son tour références EF, tu dois ajouter à ce projet.
J'ai oublié la
App.config
. Vous avez tout à fait raison!OriginalL'auteur Tico
Désolé pour la réponse tardive - en fait, il y a une solution simple:
Si vous examinez les packages\EntityFramework.6.1.3\lib\net45 dossier, vous remarquerez qu'il y a une autre dll qui est déjà là - EntityFramework.SqlServer.
Simplement ajouter une référence, et tout fonctionnera.
OriginalL'auteur Sahil Talwar
J'ai eu le même problème et rien n'a fonctionné pour moi. La seule chose qui a résolu mon cette question pour moi était de désinstaller SQL Server Compact de ma machine (via ajout/suppression de programmes) et le ré-installer.
OriginalL'auteur dmathisen
Dans mon cas, "EntityFramework.SqlServerCompact" paquet était manquant. Je voulais juste partager si dans le cas il peut sauver la journée!
OriginalL'auteur Prateek Pandey