你会为这个项目推荐什么?

我有一个使用C#为Windows平台创建一个应用程序。

通常我所做的所有工作都在一台机器上:它有Visual Studio 2010,Microsoft SQL Server和一系列其他工具。

例如,如果我使用Entity Framework,我知道它会工作,因为我安装了一个SQL引擎。

这是我的问题和这个问题的重点:

  1. 你会用什么来保存信息? 这个软件将被出售给各个第三方公司,我无法想象去公司安装SQL Server,然后是表格, 然后,最后它会工作。 它需要Just Work™

  2. 我需要能够搜索“记录”; 按日期,ID,名称,位置等。使用SQL会很容易,但我会回到数字1的问题。

我确信我错过了每个开发人员在某些方面都学到的东西所以请事先感谢你的指导。

编辑:错过了问题中最重要的部分,项目是什么?

基本上它会保存收据中的信息,然后您可以扫描收据(我将使用Office API),并将该扫描关联到之前输入的条目。 所以它将是ID,Name,Amount,ScannedImage 。 简而言之。

编辑2:另一点重要信息:

这将只有一个并发用户,我使用它的任何持久性工具必须能够保存大量信息。 我真的不知道有多少空间明文与ocassional图像会占用,但我宁愿有额外的空间而不是想要更多的空间。

你可以看看SQLite 。 它是可移植的,不需要安装任何东西,它由普通的ORM支持。

您可以在安装时自动安装sql server express edition并以编程方式设置SQL数据库。 这是常见的做法

如果您不需要SQL服务器的所有function,那么请使用SQL紧凑版。 这样安装起来要简单得多,但不是多用户等。

SQLite也很酷

SQL Express限制为4GB。 另一个常见的策略是默认执行sql express安装和数据库设置但允许用户选择现有的sql server安装,然后你只需设置数据库(使用相同的设置代码)

您应该告诉我们有多少数据,有多少用户等。

如果您准备查看SQL方块之外的内容,您可能需要查看以文档为中心的数据库,例如RavenDB或MongoDB

恭喜您自己出去。

我在几个项目中使用过Firebird 。 它可以部署xcopy,如果需要改变,也可以成为一个体面的服务器。 如果需要,它可以在Linux和MacOSX上运行(使用Mono进行.Net实现)。

这只是为了提供一个额外的选择。 SQLite看起来也是一个不错的选择。

我将在这里冒一个疯狂和疯狂的风险并提出一个完全荒谬的建议。

您是否认真考虑将XML作为数据存储? LINQ to XML使得查询这些东西变得轻而易举,而且性能非常高。 无需额外安装即可支持。 它满足您的It Just Works™要求。 这只会留下磁盘空间问题。

但是, 磁盘空间很便宜。 通过额外的软件安装节省空间,您可能没有像您想象的那么多担心。

这是一个值得考虑(或重新考虑)的选择。

把它丢去外面。

如果您使用.net,我认为最简单的方法是设置一个Sql Server Compact数据库,它是一种由Microsoft软件制作的sqlite,易于集成到VS .Net。

下面是网站http://www.microsoft.com/sqlserver/2008/en/us/compact.aspx中的描述粘贴,您可以免费下载。

嵌入式数据库,用于构建客户端

Microsoft SQL Server Compact是一个免费的SQL Server嵌入式数据库,非常适合为移动设备,桌面和Web客户端构建独立和偶尔连接的应用程序。

主要特点

  • 免费使用和分发
  • 支持台式机和移动设备
  • 占地面积小,易于部署
  • 完全嵌入式架构
  • 无需管理
  • 单文件,无代码数据库格式
  • 支持ClickOnce,XCopy,MSI,CAB和非管理员嵌入式安装选项
  • 支持所有Microsoft Windows嵌入式,移动,桌面和服务器操作系统
  • 支持Transact-SQL语法和SQL Server数据类型的丰富子集
  • Microsoft Visual Studio 2008集成
  • 支持ADO.NET,LINQ to SQL,LINQ to Entities和ADO.NET Entity Framework
  • 支持多个并发本地连接

有了您提供的所有细节,嵌入式数据库将是最佳解决方案,请使用System.Data.SQLite 。