web-dev-qa-db-fra.com

Impossible de charger les composants natifs de SQL Server Compact correspondant au fournisseur ADO.NET

Dans mon projet, j'utilise la base de données SQL CE 3.5 avec framework d'entité et j'ai suivi cet article mais j'ai cette exception:

Impossible de charger les composants natifs de SQL Server Compact correspondant au fournisseur ADO.NET de la version 8080. Installez la version correcte de SQL Server Compact. Reportez-vous à l'article 974247 de la Base de connaissances pour plus de détails.

Tous les détails

System.Data.SqlServerCe.SqlCeException was unhandled
  Message=Unable to load the native components of SQL Server Compact corresponding to the ADO.NET provider of version 8080. Install the correct version of SQL Server Compact. Refer to KB article 974247 for more details.
  Source=""
  HResult=-1
  NativeError=-1
  StackTrace:
       at System.Data.SqlServerCe.NativeMethods.LoadNativeBinaries()
       at System.Data.SqlServerCe.SqlCeConnection..ctor()
       at System.Data.SqlServerCe.SqlCeProviderFactory.CreateConnection()
       at System.Data.EntityClient.EntityConnection.GetStoreConnection(DbProviderFactory factory)
       at System.Data.EntityClient.EntityConnection.ChangeConnectionString(String newConnectionString)
       at System.Data.Objects.ObjectContext..ctor(String connectionString, String defaultContainerName)
       at DAL.OimDBEntities..ctor()
       at DAL.OimRepository..ctor()
       at Microsoft.Rtc.Collaboration.Sample.SubscribePresenceView.UCMASampleSubscribePresenceView.Subscribe()
       at Microsoft.Rtc.Collaboration.Sample.SubscribePresenceView.UCMASampleSubscribePresenceView.Run()
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()
  InnerException: System.DllNotFoundException
       Message=Unable to load DLL 'sqlceme35.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
       Source=System.Data.SqlServerCe
       TypeName=""
       StackTrace:
            at System.Data.SqlServerCe.NativeMethods.GetSqlCeVersionInfo(IntPtr& pwszVersion)
            at System.Data.SqlServerCe.NativeMethods.LoadValidLibrary(String modulePath, Int32 moduleVersion)
            at System.Data.SqlServerCe.NativeMethods.LoadNativeBinaries()
       InnerException: 
21
Tarek Saied

J'ai eu cette erreur avec une installation privée de SqlServerCE. J'avais une référence à System.Data.SqlServerCe.dll dans mon projet, mais il me manquait d'autres DLL (composants natifs) nécessaires à SqlServerCE. Les "composants natifs" se trouvent dans les sous-dossiers x86 et AMD64 du dossier "privé" de SqlServerCE. Vous devez vous assurer qu'ils sont copiés dans le dossier de sortie de votre projet.

33
Tom Andraszek

J'avais un problème similaire. J'ouvrais une base de données SQL compacte et cela m'a donné l'erreur suivante:

Impossible de charger les composants natifs de SQL Server Compact correspondant au fournisseur ADO.NET de la version 8080. Installez la version correcte de SQL Server Compact. Reportez-vous à l'article 974247 de la Base de connaissances pour plus de détails.

En recherchant l'article, cela m'a conduit à ce qui suit Lien . La citation suivante explique ce qui n'a pas fonctionné:

Les applications compactes se programment généralement contre le fournisseur Compact ADO.NET (System.Data.SqlServerCe.dll). Ce fournisseur communique à son tour avec les composants Compact natifs. Afin d'éviter diverses incohérences, un fournisseur Compact ADO.NET d'une certaine version ne peut parler qu'aux composants natifs Compact de la même version.

À la fin, je l'ai résolu en téléchargeant et en installant le service pack dans ce qui suit lien.

2
martijn

J'avais également rencontré le même problème. le problème était que j'avais utilisé la commande install-package EFcodeFirst.SqlServerCompact suivante pour obtenir le sqlCE. la version téléchargée par le gestionnaire de paquets était 4.0 et alors que sur mon disque dur la version présente était 3.5

téléchargez la dernière version 4.0 à partir de l'emplacement suivant http://www.Microsoft.com/en-us/download/details.aspx?id=17876 a résolu mon problème

2
Ashish Gupta

Vous devrez copier le fichier suivant et le répertoire entier à l'emplacement où votre .exe s'exécute sur votre serveur. Ce fichier et ce dossier se trouvent très probablement dans le répertoire C:\Program Files (x86)\Microsoft SQL Server Compact Edition\V4.0\Private

System.Data.SqlServerCe.dll L'ensemble du dossier AMD64 Je ne sais pas ce qui est utilisé à partir du dossier AMD64, mais dès que j'ai copié cela sur mon application a commencé à fonctionner. Vous pouvez également obtenir votre fichier System.Data.SqlServerCe.dll en cliquant dessus dans Visual Studio sous le dossier Références, puis dans l'onglet des propriétés en définissant "Copier local" sur True, puis lorsque vous créez votre application, ce fichier sera dans votre dossier de sortie.

1
Dhanik Lal Sahni