在我的项目中,我使用SQL CE 3.5数据库和实体框架,并遵循this article,但我有这个例外:
无法加载与版本8080的ADO.NET提供程序对应的SQL Server Compact的本机组件。安装正确版本的SQL Server Compact。有关更多详细信息,请参阅知识库文章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:
答案 0 :(得分:32)
我在私有安装SqlServerCE时遇到此错误。我在我的项目中引用了System.Data.SqlServerCe.dll,但我遗漏了SqlServerCE所需的其他dll(本机组件)。 “本机组件”位于SqlServerCE的“私有”文件夹的x86和amd64子文件夹中。您需要确保将它们复制到项目的输出文件夹中。
答案 1 :(得分:2)
我也遇到过同样的问题。问题是我使用了以下命令 install-package EFcodeFirst.SqlServerCompact来获取sqlCE。包管理器下载的版本是4.0,而在我的硬盘上,版本是3.5
从以下位置下载最新版本4.0 http://www.microsoft.com/en-us/download/details.aspx?id=17876确实解决了我的问题
答案 2 :(得分:2)
我有类似的问题。我正在打开一个紧凑的框架sql数据库,它给了我以下错误:
无法加载与版本8080的ADO.NET提供程序对应的SQL Server Compact的本机组件。安装正确版本的SQL Server Compact。有关更多详细信息,请参阅知识库文章974247.
在查阅文章时,它引导我进入以下Link。以下引用解释了出了什么问题:
基于压缩的应用程序通常针对Compact ADO.NET提供程序(System.Data.SqlServerCe.dll)进行编程。此提供程序又与本机Compact组件进行通信。为了避免各种不一致,某个版本的Compact ADO.NET提供程序只能与同一版本的Compact本机组件通信。
最后,我通过在以下link.
中下载并安装Service Pack解决了这个问题答案 3 :(得分:1)
您需要将以下文件和整个目录复制到服务器上运行.exe的位置。此文件和文件夹很可能位于目录C:\ Program Files(x86)\ Microsoft SQL Server Compact Edition \ V4.0 \ Private
中System.Data.SqlServerCe.dll 整个amd64文件夹 我不确定amd64文件夹中使用了什么,但是一旦我复制了我的应用程序就开始工作了。您还可以通过在References文件夹下的Visual Studio中单击它来获取System.Data.SqlServerCe.dll文件,然后在属性选项卡设置中将“复制本地”设置为True,然后在构建应用程序时该文件将在您的文件中发布文件夹。