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

时间:2010-10-25 21:06:21

标签: c# .net client

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

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

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

这是我的问题以及这个问题的要点:

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

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

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

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

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

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

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

7 个答案:

答案 0 :(得分:15)

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

答案 1 :(得分:3)

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

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

SQLite也很酷

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

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

答案 2 :(得分:3)

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

祝贺你自己出去。

答案 3 :(得分:1)

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

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

答案 4 :(得分:1)

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

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

但是,磁盘空间很便宜。而且,如果您将从其他软件安装中节省空间,那么您可能不会像想象的那样担心。

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

把它扔掉那里。

答案 5 :(得分:1)

如果您使用.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实体框架
  • 支持多个并发本地连接

答案 6 :(得分:0)

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