我有一个C#应用程序,允许一个用户输入有关客户和工作站点的信息。这些信息非常基础。
以下是我对此计划所需的规范。
这似乎都指向了一个数据库,但是一个非常轻量级的数据库。但是,我还要求它对数据存储没有任何限制。如果您同意我应该使用数据库,请告诉我哪些最适合我的需求。如果您认为我不应该使用数据库,请就您认为最好的方式提出一些其他建议。
答案 0 :(得分:4)
我的建议是使用SQLite。你可以在这里找到它:http://sqlite.org/。你可以在这里找到C#包装器版本:http://sqlite.phxsoftware.com/
SQLite非常轻量级,并且对于这样的轻量级引擎有一些非常强大的功能。您可以查看的另一个选项是Microsoft Access。
答案 1 :(得分:4)
你再次提出错误的问题:)
更好的问题是“我如何构建一个允许我更改数据存储实现的应用程序?”
如果应用存储库模式并正确连接它,则可以构建可互换的持久层。因此,您可以从一个实现开始,并根据需要进行更改,而无需重新设计业务或应用程序层。
一旦你有了一个存储库接口,你就可以尝试很多不同的方法:
平面文件 - 您可以将数据保存为XML,并且只要不是很多数据就可以将全部内容存储在内存中(只需在启动时读取文件,写入文件)在关机时)。使用内存中的XML,您可以获得非常高的吞吐量,而无需考虑数据库索引等。
可分发的数据库 - SQLite或SQL Compact工作得很好;它们提供了许多数据库优势,无需安装
本地数据库 - SQL Express是轻量级和全功能数据库之间的良好中间地带。如果仔细使用,访问就足够了。主要的好处是它包含在MS Office中(虽然默认情况下没有安装),并且一些IT团队比在SQL Express上安装Access更方便。
完整数据库 - MySql,SQL Server,PostGreSQL等。
鉴于您的具体要求,我建议您使用基于XML的平面文件 - 唯一的条件是您可以直接关联文件大小的应用程序的内存使用情况(因为您的数据是文本,即使XML的权重,这将使很多的条目变得非常大。)
以下是根据您的要求列出的优缺点:
<强>缺点强>
<强>赞成强>
答案 2 :(得分:3)
SQLite?怎么样?听起来它非常适合您的应用。
您可以使用System.Data.SQLite作为.NET包装器。
答案 3 :(得分:3)
听起来像数据库是100%你需要的。它提供数据存储,数据检索(包括查询)以及将数据导出为标准格式(直接从数据库或通过应用程序)的功能。
对于轻型数据库,我建议SQLite(发音为'SQL Lite';))。您可以谷歌获取有关如何设置它的教程,以及如何通过C#代码与它进行交互。我还找到了对SQLite的this C#包装器的引用,它可以为您完成大部分工作!
答案 4 :(得分:0)
您可以免费获得SQL Server Express。我会说问题不是为什么你要使用数据库,为什么不应该为什么?这类问题正是数据库所针对的问题,而SQL Server是一个功能非常强大且使用广泛的数据库,所以如果您打算使用其他解决方案,需要为您提供一个很好的理由。不会使用数据库。
答案 5 :(得分:0)
数据库非常合适。 SQLite和其他人提到的一样好。
您还可以使用SQL Server Express的本地实例来利用与Microsoft开发堆栈的其他部分的改进集成(因为您提到了C#)。
第三个选项是文档数据库,如Raven,可能适合您的数据声音。
修改强>
第四个选项是在测试版发布几天后尝试Lightswitch。 (2010年8月23日)
的 /修改
数据存储(硬盘的空白区域)总是存在限制。根据维基百科,SQL Express仅限于10 GB for SQL Server Express 2008 R2