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

C# C中桌面应用程序的数据库引擎#,c#,database,desktop-application,C#,Database,Desktop Application,我需要一个用于桌面应用程序的轻量级数据库引擎。应用程序不是以数据为中心的,尽管它需要一些持久数据。您会使用MS SQL Server express edition还是SQLite 编辑 SQL Server Compact edition是免费的吗?如果是这样的话,那么SQLite和SQL Server Compact edition如何开发这种应用程序呢 SQLite,特别是当它是单用户时。一个数据文件和一个DLL。绝对不是Sql Server Express。这是一个服务器级引擎。您需要一

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

编辑


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

SQLite,特别是当它是单用户时。一个数据文件和一个DLL。

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

Defo SQL lite,尽管它有一些限制/功能,如果您想查看MS SQL Server compact edition而非Express的单用户系统,您应该注意这些限制/功能(请参见此处:)

Compact Edition是一种类似于SQLite的嵌入式数据库


不幸的是,我无法提出任何建议。

如何?

如果您正在使用C#和Visual Studio,只需右键单击您的项目并选择“添加项…”,然后在对话框中选择“本地数据库”,这将创建一个SQL CE(Compact Edition)数据库。它拥有SQL Express/Server的大部分功能,包括表、数据类型和视图,但不允许存储过程。它还可以与Linq to SQL一起使用,因此集成起来很快。

使用SQL Server Compact-您可以这样使用Linq,这本身就是值得的


虽然SQLite是一个选项,但您需要获得一个ORM层,与SQLServer相比,性能增益将是最小的/不存在的

对.NET嵌入式db世界中的一位后起之秀的爱--。该许可证比SQLServerCompact(仅对单个开发人员免费)有一点限制,但它是一个100%托管的数据库,带有xcopy部署,并且具有VS工具集成

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


否则,在放大时会出现问题。

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


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

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

i、 e: 插入->为实体选择键->不好


生成和标识密钥(GUID或其他内容)将其添加到您的实体中,然后插入->good

考虑最终用户的开销。。。SQL Server Express仍然会占用资源,需要时间在重新启动时启动,等等。对于少量的单用户持久数据,我将使用SQLite。除非你正在进行严肃的绑定等工作,否则你和它之间不需要ORM。

是一个众所周知的数据库,并且支持Sql Server compact。当你使用clickonce时,部署Sql Server compact也非常容易。虽然我同意它不是特别轻量级,但有许多桌面应用程序确实使用它。e、 g.行动!,微软会计。SQLite为+1!作为奖励,有一个顶级的开源ADO.NET提供程序,支持实体框架。我使用SqlCe取得了很好的效果。有一个非常相似的要求。问题在于.net4的System.Data.Sqlite提供程序非常不稳定。这可能会让我转向SqlCESqlCe,因为它非常好。我用那个小小的数据库做了一些惊人的事情。SqlCe非常容易部署。是的,SQL Server Compact edition是“免费的”(c.f.我之前发布的链接)。但那不是免费软件,是吗?他从来没有说过它必须是免费的。。。VistaDB是一个很好的选择,可以让您在桌面上运行,然后使用相同的代码扩展到SQL Server。它有T-SQL进程和其他SQL CE缺少的东西。谢谢你的观点。但是,即使应用程序不是以数据为中心的,它必须保存的信息也包含一些活动日志。用数据库做这件事更方便。你能再解释一下这个问题吗?首先,我为英语感到抱歉。我的意思是,如果您将SQL server(而不是CE)与EF一起使用,并且要插入一个新实体,则会发生两个“操作”:1-插入实体2-id(当然,如果是自动递增的)将分配给您的实体。对于SQL CE,这是不可能的,ID的分配将导致错误,因此您必须在插入之前生成GUID