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

时间:2009-09-14 13:42:04

标签: c# database desktop-application

我需要一个用于桌面应用程序的轻量级数据库引擎。该应用程序不是以数据为中心的,尽管它需要一些持久性数据。你会使用哪一个MS SQL Server express版或SQLite?

修改

SQL Server Compact版是免费的吗?如果是这样的话,那么SQLite vs SQL Server Compact版开发这种应用程序呢?

13 个答案:

答案 0 :(得分:10)

绝对不是Sql Server Express。这是一个服务器类引擎。你想要一个进程内引擎。在这方面,SQLite很好。 Sql Server Compact 版也是如此。两者都是免费的,或者应该足以满足您的需求。

答案 1 :(得分:10)

如果您正在使用C#和Visual Studio,只需右键单击您的项目并选择“添加项目...”,然后在对话框中选择“本地数据库”,这将创建一个SQL CE(精简版)数据库。它具有SQL Express / Server的大部分功能,就表,数据类型,视图而言,但不允许存储过程。它也适用于Linq-to-SQL,因此可以轻松集成。

答案 2 :(得分:4)

使用SQL Server Compact - 您可以使用LINQ,这本身就值得付出努力。

虽然SQLite是一个选项,但您需要获得一个ORM层,与SQL Server相比,性能提升最小/不存在。

答案 3 :(得分:4)

Firebird是一个众所周知的数据库,支持latest Microsoft framework

答案 4 :(得分:2)

SQLite,特别是如果它是单用户的话。一个数据文件和一个DLL。

答案 5 :(得分:2)

如果它是单个用户系统,你想要查看MS SQL Server精简版而不是Express(参见这里:http://www.microsoft.com/sqlserver/2008/en/us/compact.aspx

Compact Edition是一个类似于SQLite的可嵌入数据库。

不幸的是我不能以任何方式提出建议。

答案 6 :(得分:2)

MS SQL Server Compact怎么办?

答案 7 :(得分:2)

有些人喜欢.NET嵌入式数据库世界中的其中一个人 - VistaDb。该许可证比Sql Server Compact(仅限单个开发人员)更具限制性,但它是一个100%托管的数据库,具有xcopy部署并具有VS工具集成。

答案 8 :(得分:2)

请注意,如果将SQL CE与EF一起使用,则必须生成自己的id密钥,因为SQL CE不支持多个查询。

即: 插入 - >选择实体的密钥 - >不好

生成和ID键(GUID或其他)将其添加到您的实体,然后插入 - >好

答案 9 :(得分:1)

Defo SQL lite,虽然它有一些您应该注意的限制/功能

答案 10 :(得分:0)

如果您的需求是以数据为中心的,那么您真正需要的是一个文件,如果您需要事务(ACID),那么您需要的是(rdbms)数据库。

否则在向上扩展时会出现问题。

答案 11 :(得分:0)

如果它不是很多数据,并且您不需要运行复杂的查询(虽然LINQ可以),为什么不使用XML数据集呢?这样它就可以独立于平台(可以在带有Mono的Linux上运行),并且不需要用户安装额外的资源占用软件。

我广泛使用XML数据集用于需要持久数据存储少量信息的应用程序。如果它只是几个变量,您也可以使用设置文件,它将根据您的选择存储在每个应用程序或每个用户。

答案 12 :(得分:0)

考虑最终用户的开销...... SQL Server Express仍占用资源,需要时间才能重新启动,等等。对于少量的单用户持久性数据,我会选择SQLite。除非您正在进行严格的约束等,否则您和它之间不需要ORM。