SQL Server CE 分布

Posted

技术标签:

【中文标题】SQL Server CE 分布【英文标题】:SQL Server CE distribution 【发布时间】:2013-02-20 09:48:02 【问题描述】:

我花了几天时间试图解决这个问题,但没有成功,我的要求非常简单 - 我想用 database 创建一个应用程序,该应用程序可以在大多数 PC 上运行(没有安装 DB 服务器)我想使用 LINQ。出于兼容性原因,我想使用 .NET framework 3.5(每台 Windows 7 机器都有它)。

我尝试了两种方法:SQL Server CE 和 SQLite。

SQL Server CE

虽然 Visual Studio 不支持紧凑版 SQL 服务器的 LINQ,但我找到了简单的解决方法 - 使用 Visual Studio 中的 metal.exe 工具生成 .dbml 文件,然后将其拖到项目中。我的应用程序在我的机器上运行良好,但是当我将它复制到其他地方时,它会崩溃。我已经从 C:\Program Files (x86)\Microsoft SQL Server Compact Edition\3.5 复制了所有 dll 并尝试了 4.0。我认为问题是我的应用程序没有在其目录中寻找 dll(引用)。我设法使用 DataSets(没有 LINQ)让它工作,我在其中手动添加对 SQLServerCE 的引用并将 CopyLocal 检查为 true。但是当我使用 LINQ 时,项目引用中没有对 SQLServerCE 的引用并且它正在工作。我不知道如何改变它。还是其他地方有问题?

SQLite

在长期使用 SQL Server CE 之后,我尝试了 SQLite。我对 .NET 中的 SQLite 支持有多差感到非常失望。我必须下载旧版本的 ADO.NET 提供程序(新版本不会将 SQLite 数据库添加到我的 Visual Studio 2010 中 - 我不明白为什么,但我用谷歌搜索它是正常的,我必须安装旧版本,然后将其替换为较新)。然后我下载了 dblinq(后来我发现这个项目已经死了),在搞砸了 dbmetal 和 dll 之后,我摆脱了 Visual Studio 中的错误并编译了我的应用程序。但我无法运行它,它总是在错误 40 时崩溃——就像没有 SQLite 服务器一样。当然我已经复制了所有的dll。我什至无法在我的开发机器上运行它。

我很惊讶在 C# .NET 中创建简单的数据库应用程序几乎是不可能的,它不会打扰客户端和服务器等。

请问有没有人让 SQL CE 与 LINQ 一起工作,主要是让他的应用程序可分发?

【问题讨论】:

如果您告诉我们应用程序因 SQL CE 崩溃后事件日志中的错误消息会很有帮助... 它在创建上下文时崩溃 - db = new MyDatabase(@"MyDatabase.sdf");消息:无法打开 MyDatabase.sdf。未安装提供程序 System.Data.SqlServerCe.3.5。 我让它工作了,由于某种原因在参考文献中有 3.5.1 版本我不得不添加应用程序配置文件并在那里指定它。谢谢! 详情请看我的博文:erikej.blogspot.com/2011/02/… 【参考方案1】:

我建议您尝试使用 nuget Entity Framework for SQL CE 包。它将下载所有必需的程序集以使其工作。 http://nuget.org/packages/EntityFramework.SqlServerCompact/

【讨论】:

以上是关于SQL Server CE 分布的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 中分布式事务的兼容性

在 Sql server 中递归分布行

SQL Server 分布式数据库性能测试

SQL Server横向扩展:设计,实现与维护- 分布式分区视图

SQL Server 2005/2008/2012中应用分布式分区视图

SQL Server 开启DTC分布式事务