C# C中桌面应用程序的数据库引擎#
我需要一个用于桌面应用程序的轻量级数据库引擎。应用程序不是以数据为中心的,尽管它需要一些持久数据。您会使用MS SQL Server express edition还是SQLite 编辑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。这是一个服务器级引擎。您需要一
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