您建议将哪个数据库与C#(.NET)应用程序一起使用?

时间:2008-10-06 12:22:25

标签: c# .net database local

我正在制定一个小项目计划,当我需要决定使用哪个本地数据库系统时,我找到了一个点。

输入数据将存储在webserver(托管 - MySQL DB)上。我们的想法是构建一个过程来下载所有必要的数据(例如在午夜)并处理它们。但是,会有很多输入和处理阶段,所以我需要使用某种本地数据库来存储应用程序的半成品

您建议使用哪种本地数据库系统来使用C#(.NET)应用程序?

编辑:最终产品(信息)应该很容易导出回主机MySQL数据库。

正如威尔在他的回答中所提到的 - 是的,我是为了表现和使用舒适。

13 个答案:

答案 0 :(得分:13)

我想说Microsoft Sql 2005 Express,因为它(几乎)是在.NET中开发时的明显选择。

但这完全取决于你以前的数据库技能。如果您已经知道MySql,并且正如您已经说过的那样,那么数据应该导出回MySql。为什么不一直使用MySql?

答案 1 :(得分:8)

对于快速和脏的我会使用Sql Server Compact Edition.它是Sql Server的进程内实现,因此它不需要您安装任何其他应用程序。

在当天,您将使用Access数据库进行此类操作。但Access数据库有点打击。

将完成的数据上传回生产服务器并不需要太多时间。如果您正在寻找自动化该过程的解决方案,您可能需要在本地托管MySql实例并使用它提供的任何复制服务。

答案 2 :(得分:3)

取决于应用程序的分布程度。对于服务于几个用户(或一台机器上的单个用户)的独立应用程序,SQLite极其快速和高效。 SQLite的主要问题是它不正式支持并行写入。在轻量级应用程序中,这不会给您带来问题;但是,使用SQLite可以在线为数百万用户提供服务,效果不佳。

另一个重要的问题是FTS(全文搜索)。您的应用程序要搜索整个单词而不是单个/多个字符吗?如果是这样,请考虑使用Microsoft SQL Server,因为要使FTS在SQLite上工作非常麻烦,并且在某些操作系统(包括Linux)上几乎是不可能的。但是,即使在数据库创建后,只需单击几下,MS SQL Server都可以启用FTS。 / p>

就响应性而言,我已经进行了许多测试,对于简单的查询,SQLite通常比MS SQL Server快10-20毫秒。同样,可以在MS SQL Server中进行性能调整,并且该生态系统非常强大。

因此,我强烈建议使用MS SQL Server。

答案 3 :(得分:2)

我说使用Sql Server Compact Edition。它与SQL Server的完整版本类似,VS2008内置支持设计表,查询等(Management Studio 2008也支持它)。最大的缺点是你丢失了存储过程,但好处很大,因为不需要在本地用户机器上安装任何东西,并且它可以快速地选择数据。更酷的是,使用SQL Metal,您可以创建一个DBML文件并使用LINQ,就像使用Sql Server一样。

答案 4 :(得分:1)

使用db4o怎么样?这是一个可以嵌入到您的应用程序中的OODB。还支持replication。 编辑:作为旁注 - 在我目前使用db4o的宠物项目中,我有一行(C#3.5):

IList<Users> list = Persistence.Database.Query<Users>(u => u.Name == "Admin");

使用强类型lambda表达式从数据库中获取(惰性)对象列表。它还使用索引快速检索列表。

答案 5 :(得分:0)

MS SQL Server支持开箱即用,无需任何其他驱动程序或设置。此外,MS SQL Server Express是免费的。

您可以生成将数据导入/导出MySQL的脚本。

答案 6 :(得分:0)

“明显”的选择是MS SQL Server Express。 VS和.net都支持它本地,如果你已经体验过它(对于主数据库),我肯定会坚持使用它(或它的快速版本)。

但这肯定不是你选择的结束。我将SQLite用于跨平台应用程序和Web应用程序。它的速度非常快,并且通过System.Data.SQLite很好地集成了 - 虽然没有MS SQL Server那么紧密。

还有一个紧凑版的SQL Server,可以很好地与SQLite进行比较。

答案 7 :(得分:0)

我不知道一个好的进程内数据库是完全与MySQL兼容的语法和类型。考虑到这一点,您有三种选择:

  1. 选择类似SQLlite,Access或SQL Server Compact的内容。问题是你最终会用其中任何一个编写一些复杂的转换逻辑,并且必须两次编写所有查询。
  2. 在本地安装MySQL。然后,您必须忍受在本地系统上运行完整的数据库服务器。您肯定希望避免将此问题发送给客户,但是对于您自己使用它可能没问题。幸运的是,MySQL并没有像其他现代数据库服务器那样使用尽可能多的资源,但这仍然不太理想。
  3. 在服务器上切换到SQL Server Express版本,并在客户端使用SQL Server Compact。它和MySQL一样便宜(可能更便宜,因为你应该为任何商业用途购买MySQL)。考虑到您在客户端使用C#,您可能也希望在服务器端将它与ASP.Net一起使用。如果您正在使用ASP.Net服务器端,那么找到提供SQL Server Express的主机并不困难。现在,您的数据库是类型兼容的,并且您为客户端编写的任何查询都可以保证适用于您的服务器。
  4. IMO,MS数据库堆栈(不包括访问)的一大优势在于它们具有兼容的解决方案,可以满足您从桌面到多数据中心群集的所有工作。如果您的应用程序规模发生变化,或者您需要在两个不同类别的应用程序之间发送数据,那么您的数据库层将得到处理。

答案 8 :(得分:0)

选择任何可用的内容,但只选择针对接口的代码,这样您就可以轻松地在它们之间切换。

对于生产,我会说大型项目的MS SQL(或表达中级)只是因为与小型项目的VS和Sqlite紧密集成。

鉴于描述,我认为Sqlite将是一个不错的选择,因为它是最简单/最低的开销。

答案 9 :(得分:0)

我最近一直在做一些测试,虽然我也推荐使用SQL Server 2005(Express,如果需要),因为虽然SQL Server 2008是新的,现在是RTM,但它可以开箱即用。

答案 10 :(得分:0)

大多数人都提到过SQL Server ......我的理由是你可以使用源代码控制将测试用例从C#集成到数据库....

团队基础(TFS)就是来自微软的GUI ......

答案 11 :(得分:0)

因为已经回答了这个问题。我不得不提到使用CLR语言时,CLR / .NET Framework集合将MS SQL Server 2005/2008与其他语言区分开来。摘录自here

  

使用Visual等语言   基本的.NET和C#,你可以大写   在CLR集成上编写代码   逻辑更复杂,更多   适合计算任务。   另外,Visual Basic .NET和C#   提供面向对象的功能   如封装,继承,   和多态性。你很容易   将相关代码组织成类和   命名空间,这意味着你可以   更容易组织和维护你的   你工作时的代码投资   有大量的代码。该   逻辑和身体的能力   将代码组织成程序集和   命名空间是一个巨大的好处   使您能够更好地查找和关联   不同的代码片段   数据库实施。

答案 12 :(得分:-1)

对于你所描述的,绝对是MS SQL Server。良好的性能,良好的工具。免费。