让我的 SQL Server CE 在我的 Web 主机上工作的所有步骤是啥
Posted
技术标签:
【中文标题】让我的 SQL Server CE 在我的 Web 主机上工作的所有步骤是啥【英文标题】:What are all the steps to take to get my SQL Server CE to work on my web host machine让我的 SQL Server CE 在我的 Web 主机上工作的所有步骤是什么 【发布时间】:2012-03-08 22:31:20 【问题描述】:编辑:我的问题归结为,我需要采取哪些步骤来构建一个使用 SQL Server CE 中等信任度的 Web 应用程序?
在发布此内容之前,我已将桌面版本复制到我的 bin 目录中,但我确信还有更多步骤需要执行,因为这不起作用。
错误:在 ADO.NET 提供程序和 SQL Server Compact 的本机二进制文件之间检测到可能的文件版本不匹配,这可能导致功能不正确。这可能是由于存在多个不同版本的 SQL Server Compact 实例,或者由于与 SQL Server Compact 二进制文件同名的错误二进制文件。请安装匹配版本的 SQL Server Compact 二进制文件。
Web 应用:使用 VS 2010 构建的 MVC 3
在我的开发机器上一切正常。
看了this post之后,我摆脱了我的引用,将SqlServerCE.dll和SqlServerCe.Entity.dll复制到我的bin目录中。
这改变了
的错误无法加载文件或程序集“System.Data.SqlServerCe,Version=4.0.0.0,Culture=neutral,PublicKeyToken=89845dcd8080cc91”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。 (HRESULT 异常:0x80131040)
到当前的。
我从桌面文件夹中复制了 SqlServerCE.dll,因此我可以在中等信任下运行。
来自我的 Web.config 文件:
` <runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" />
<assemblyIdentity name="System.Data.SqlServerCe"
publicKeyToken="89845dcd8080cc91" culture="neutral"/>
<bindingRedirect oldVersion="4.0.0.0-4.0.0.1" newVersion="4.0.0.1"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SqlServerCe.4.0" />
<add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
</DbProviderFactories>`
编辑:谢谢大家。
我的包目录中确实有 SqlServerCompact.4.0.8852.1。
我从我的 bin 目录中删除了 SqlServerCE.dll 和 SqlServerCe.Entity.dll,因为它们在我的包中。我将本机二进制文件复制到我的 bin 中(它们包含在项目中),但我仍然收到此消息:
在 ADO.NET Provider 和 ADO.NET Provider 之间检测到可能的文件版本不匹配 SQL Server Compact 的本机二进制文件,可能会导致 不正确的功能。这可能是由于存在多个 不同版本的 SQL Server Compact 实例或由于错误 与 SQL Server Compact 二进制文件同名的二进制文件。请安装 匹配版本的 SQL Server Compact 二进制文件。
我无法使用您建议的 nuget 包,因为我有更新版本的 Entity Framework 并且它回滚了安装。
如果有人能推荐一个可以在共享托管服务器上以中等信任运行的 SQL Server CE 设置,我已经准备好重新开始一个新项目。
这是我在创建项目时一直在做的事情(但现在没有用)。
一个。安装包 SqlServerCompact 湾。安装包 System.Web.Providers C。安装包EntityFramework d。安装包EntityFramework.SqlServerCompact
【问题讨论】:
4.0.0.1 程序集版本在中等信任下不起作用,如您指向的答案中所述。您必须使用 4.0.0.0 才能获得中等信任!使用名为 Desktop 的文件夹的一种形式。 感谢 Erik,这就是我在发布此内容之前所做的。我想我错过了几个步骤。我将 System.Data.SqlServerCe.dll 从我的 Desktop 文件夹复制到我的 bin 文件夹。没有效果。我还需要做什么才能完成这项工作?我应该把它放在我的包目录中吗? 【参考方案1】:如果你的 SqlCompact 是这个版本,请检查你的包目录:SqlServerCompact.4.0.8852.1
如果是,则需要复制 packages\SqlServerCompact.4.0.8852.1\NativeBinaries 中的文件,因为它们不同。
但此版本不能以中等信任度运行,因为他们将 SqlCompact 版本更改为 4.0.0.1,并且在 .NET 4 配置文件中默认仅授权 4.0.0.0。如果您需要以中等信任度运行的版本,请试试这个https://nuget.org/packages/EntityFramework.SqlServerCompact/4.1.8482.2
【讨论】:
nuget.org/packages/SqlServerCompact 已更新,卸载旧包并获取此包。为我工作。 谢谢。这不是 ErikEJ 说我们不能在 Medium Trust 中运行的版本吗? 不,他们回滚了版本,并删除了所有历史记录。但是他们仍然没有为 SQLCE 回滚 EntityFramework,所以我仍然不能使用 SQL CE....以上是关于让我的 SQL Server CE 在我的 Web 主机上工作的所有步骤是啥的主要内容,如果未能解决你的问题,请参考以下文章
从 SQL Server Express 导入 SQL Server CE
将架构从 SQL Server 数据库传输到 SQL Server CE 数据库的简单方法?