C#桌面应用程序的数据库引擎

3

我需要一个轻量级的数据库引擎用于桌面应用程序。该应用程序不是数据中心,虽然它需要一些持久化数据。你会选择使用MS SQL Server Express版还是SQLite?

编辑

SQL Server Compact版是免费的吗?如果是这样,对于开发这种应用程序,SQLite与SQL Server Compact版如何比较?


是的,SQL Server Compact edition是“免费”的(参考我之前发布的链接)。 - Murph
13个回答

10

绝对不是Sql Server Express。那是一个服务器级引擎。您需要一个进程内引擎。在这方面,SQLite很好。SqlServer Compact Edition也很好。两者都是免费的,并且任何一种都应该能够满足您的需求。


1
使用 ClickOnce 部署 Sql Server Compact 也非常容易。 - user1228
虽然我同意它不是特别轻量级的,但有许多桌面应用程序确实在使用它。例如Act!、Microsoft Accounting等。 - Darrel Miller
4
+1 支持 SQLite!作为奖励,有一个顶级的开源 ADO.NET 提供程序可用 http://sqlite.phxsoftware.com/,支持 Entity Framework。 - Thomas Levesque
我使用SqlCe取得了很好的效果。 - AMissico
有一个非常类似的需求。问题是对于.NET4,System.Data.Sqlite提供程序相当不稳定。这可能会让我转向SqlCE。 - gideon

10
如果你正在使用 C# 和 Visual Studio,只需右键单击项目并选择“添加项目...”,在对话框中选择“本地数据库”,这将创建一个 SQL CE(紧凑版)数据库。它具有与表、数据类型、视图等方面的 SQL Express/Server 大部分功能,但不允许存储过程。它还可以与 Linq-to-SQL 一起使用,因此集成很简单。

4

选择SQL Server Compact - 这样您就可以使用LINQ,这本身就是值得努力的。

虽然SQLite是一种选择,但您需要获取ORM层,与SQL Server相比,性能提升将是微不足道的/不存在。


SqlCe非常好。我用那个小数据库做了一些很棒的东西。 - AMissico

4

2

如果只有一个用户使用的话,SQLite是一种特别适合的IT技术。它只需要一个数据文件和一个DLL。


2

SqlCe非常容易部署。 - AMissico

2

2

给.NET嵌入式数据库世界的后起之秀VistaDb一些关注。虽然许可证比Sql Server Compact更加限制(只允许单个开发人员免费使用),但它是一个100%托管的数据库,具有xcopy部署和VS工具集成。


但那不是自由软件,是吗? - yeyeyerman
他从未说过它必须是免费的...而VistaDB是一个很好的选择,可以让您在桌面上运行,然后使用相同的代码扩展到SQL Server。它具有T-SQL Procs和其他SQL CE缺少的功能。 - Jason Short

2
请注意,如果您与EF一起使用SQL CE,您将不得不生成自己的ID键,因为SQL CE不支持多个查询。
例如: 插入 -> 选择实体的键 -> 不好 生成一个ID键(GUID或其他内容),将其添加到实体中,然后插入 -> 好

1
你能详细解释一下这个问题吗? - yeyeyerman
首先,对于英文表示不好,我感到抱歉。我的意思是,如果您正在使用带有EF的SQL Server(而不是CE)并插入新实体,则会发生两个“操作”: 1- 插入您的实体 2- 将ID(如果它是自动递增的)分配给您的实体。但是,在SQL CE中,这是不可能的,因为ID的分配会导致错误,因此您必须在插入之前生成GUID。 - MatRichard

1

绝对是SQL Lite,尽管它有一些限制和特性,你应该注意到。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接