2012-09-01 5 views
16

w moim projekcie używam SQL CE 3.5 bazy danych z Entity Framework i następnie this article ale mam ten wyjątek:Nie można załadować rodzimych komponentów SQL Server Compact odpowiadające dostawcy ADO.NET

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.

Wszystko szczegóły

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: 
+2

Czy odwołałeś się do artykułu KB 974247? –

Odpowiedz

2

Też miałem napotkany ten sam problem. Problem polegał na tym, że użyłem następującego polecenia: install-package EFcodeFirst.SqlServerCompact, aby uzyskać sqlCE. wersja, która została pobrana przez menadżera pakietów wynosiła 4,0 i że na moim twardym dysku obecna wersja to 3.5

pobrania najnowsza wersja 4.0 z następującej lokalizacji http://www.microsoft.com/en-us/download/details.aspx?id=17876 nie rozwiązał mój problem

28

mam ten błąd z prywatnym zainstalować z SqlServerCE. W moim projekcie miałem odniesienie do System.Data.SqlServerCe.dll, ale brakowało mi innych bibliotek dll (rodzimych składników) potrzebnych SqlServerCE. "Komponenty natywne" znajdują się w podfolderach x86 i amd64 folderu "private" SqlServerCE. Musisz upewnić się, że zostaną skopiowane do folderu wyjściowego projektu.

+1

gdzie są te foldery? – sports

+0

C: \ Program Files \ Microsoft SQL Server Compact Edition \ v4.0 \ Prywatne – andy

2

Miałem podobny problem. I było otwarcie kompaktowy bazy danych sql i ramy dał mi następujący błąd:

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.

Kiedy patrzy się na artykuł, co doprowadziło mnie do następnego Link. Poniższy cytat wyjaśnia, co poszło nie tak:

Compact based applications generally program against the Compact ADO.NET provider (System.Data.SqlServerCe.dll). This provider in-turn communicates with the native Compact components. In order to avoid various inconsistencies, a Compact ADO.NET provider of a certain version can talk only to the Compact native components of the same version.

W końcu rozwiązany przez pobranie i zainstalowanie dodatku Service Pack w następującym link.

1

Musisz skopiować poniższy plik i cały katalog do lokalizacji gdzie twój .exe działa na twoim serwerze. Ten plik i folder najprawdopodobniej w katalogu C: \ Program Files (x86) \ Microsoft SQL Server Compact Edition \ V4.0 \ Private

System.Data.SqlServerCe.dll cały folder amd64 jestem nie wiem, co jest używane z folderu amd64, ale jak tylko skopiowałem to, moja aplikacja zaczęła działać. Można również uzyskać plik System.Data.SqlServerCe.dll, klikając go w Visual Studio w folderze References, a następnie w ustawieniu karty właściwości "Copy Local" na True, a po zbudowaniu aplikacji plik ten będzie zwolnij folder.

Powiązane problemy