Не удалось загрузить собственные компоненты SQL Server Compact, соответствующие поставщику ADO.NET - программирование

Не удалось загрузить собственные компоненты SQL Server Compact, соответствующие поставщику ADO.NET

В моем проекте я использую базу данных SQL CE 3.5 с сущностью и следую этой статье, но у меня есть это исключение:

Невозможно загрузить собственные компоненты SQL Server Compact, соответствующие поставщику ADO.NET версии 8080. Установите правильную версию SQL Server Compact. Подробнее см. Статью KB 974247.

Все подробности

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: 
4b9b3361

Ответ 1

Я получил эту ошибку с частной установкой SqlServerCE. У меня была ссылка на System.Data.SqlServerCe.dll в моем проекте, но мне не хватало других dll (собственных компонентов), необходимых SqlServerCE. "Нативные компоненты" находятся в подкаталогах x86 и amd64 в папке SqlServerCE "private". Вам нужно убедиться, что они скопированы в выходную папку вашего проекта.

Ответ 2

Я также столкнулся с той же проблемой. проблема в том, что я использовал следующую команду install-package EFcodeFirst.SqlServerCompact, чтобы получить sqlCE. версия, загруженная диспетчером пакетов, была 4.0, а на моем жестком диске имелась версия 3.5

загрузить последнюю версию 4.0 из следующего местоположения http://www.microsoft.com/en-us/download/details.aspx?id=17876 действительно решила мою проблему

Ответ 3

У меня была аналогичная проблема. Я открыл компактную базу данных sql базы данных, и это дало мне следующую ошибку:

Невозможно загрузить собственные компоненты SQL Server Compact, соответствующие поставщику ADO.NET версии 8080. Установите правильную версию SQL Server Compact. Подробнее см. Статью KB 974247.

При поиске статьи она привела меня к следующей Ссылка. Следующая цитата объясняет, что пошло не так:

Компактные приложения обычно работают с поставщиком Compact ADO.NET(System.Data.SqlServerCe.dll). Этот провайдер в свою очередь общается с родными компактными компонентами. Во избежание различных несоответствий поставщик Compact ADO.NET определенной версии может разговаривать только с родными компонентами Compact в той же версии.

В конце концов я решил его загрузить и установить пакет обновления в следующей ссылке.

Ответ 4

Вам нужно будет скопировать следующий файл и весь каталог в место, где ваш .exe запущен на вашем сервере. Этот файл и папка, скорее всего, находятся в каталоге C:\Program Files (x86)\Microsoft SQL Server Compact Edition\V4.0\Private

System.Data.SqlServerCe.dll Вся папка amd64 Я не уверен, что используется в папке amd64, но как только я скопировал это, мое приложение начало работать. Вы также можете получить файл System.Data.SqlServerCe.dll, щелкнув его в Visual Studio в папке "Ссылки", а затем на вкладке свойств "Копировать локальную" на True, а затем, когда вы создадите приложение, этот файл будет находиться в вашем релиз.

Ответ 6

Убедитесь, что папки AMD64 и x86 (а также файлы и вложенные папки) находятся в выходной папке для отладки. Либо включите их в проект с локальным копированием, либо скопируйте вручную и вставьте их в файл bin/debug.