需要使用 SQL Server CE 迁移到 ANYCPU

Posted

技术标签:

【中文标题】需要使用 SQL Server CE 迁移到 ANYCPU【英文标题】:Need to move to ANYCPU with SQL Server CE 【发布时间】:2017-03-20 23:22:32 【问题描述】:

我们的应用程序当前在 X86 模式下运行 SQL Server CE 3.5。我需要切换到 ANYCPU 模式。我尝试升级 SQL Server CE 4.0,因为我听说 SQL Server CE 3.5 不支持 ANYCPU。已将我的项目更改为 ANYCPU,但在尝试打开 SQL Server Compact 文件时出现以下错误。请帮忙。

无法加载 SQL Server Compact 的本机组件 对应版本 8080 的 ADO.NET 提供程序。安装 SQL Server Compact 的正确版本。请参阅知识库文章 974247 更多细节。

无法加载 DLL 'sqlceme35.dll':找不到指定的模块。 (HRESULT 异常:0x8007007E)

【问题讨论】:

您是否真的阅读了错误消息指向的知识库文章?它提供了解决此问题的步骤。 是的。我浏览了this 文章。没用。 我创建了小型控制台应用程序来检查问题。控制台应用程序可以与 SQL Server CE 3.5 一起使用。但它永远无法与 SQL Server CE 4.0 一起使用。无论我使用的是 X86 还是 ANYCPU。所以我认为是与 SQL Server CE 4.0 相关的东西。需要先找出来。 我设法通过使用 C:\Program Files\Microsoft SQL Server Compact Edition\v4.0\Desktop\System.Data.SqlServerCe.dll 解决了上述问题。所以路径 C:\Program Files\Microsoft SQL Server Compact Edition\v4.0\Private 中的 System.Data.SqlServerCe.dll 不起作用。 【参考方案1】:

我必须升级我当前的 SQL Server Compact 文件以在 SQL Server Compact 4.0 版中使用。所以我使用以下代码将 SQL Server Compact 3.5 版文件升级到 4.0。

public static void Upgrade(string fileName, string password)
    
        if (String.IsNullOrEmpty(fileName) || password == null)
            throw new Exception("Unable to create connection string because filename or password was not defined");

        try
        
            var connectionString = string.Format(@"Data source=0;Password=1", fileName, password);
            var engine = new SqlCeEngine(connectionString);
            engine.Upgrade();
        
        catch (Exception ex)
        
            throw (ex);
        
    

需要允许 SQL Server Compact 4.0 与实体框架一起使用。要安装 EntityFramework.SqlServerCompact,请在包管理器控制台中运行以下命令

安装包 EntityFramework.SqlServerCompact -版本 4.1.8482.2

【讨论】:

以上是关于需要使用 SQL Server CE 迁移到 ANYCPU的主要内容,如果未能解决你的问题,请参考以下文章

从 SQL Server CE 迁移到 SQL Server Express

使用 WebMatrix 将数据库从 SQL Server CE 迁移到 Express - 现在我找不到物理数据库

将架构从 SQL Server 数据库传输到 SQL Server CE 数据库的简单方法?

带有 Sync Framework SP1 和 SP2 的 SQL Server CE

IIS 7 和 Sql Server 2008 上的 Sql Server CE 2.0 RDA

MySQL Workbench 从 SQL Server 2008 迁移到 MySQL:错误:确定要复制的行数:不支持的操作数类型