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

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

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

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

编辑:最终产品(信息)应该很容易导出回Hosting MySQL DB。

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

我想说Microsoft Sql 2005 Express,因为它(几乎)在.NET中开发时显而易见。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

我不知道一个好的进程内数据库,它完全是与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的主机并不困难。 现在您的数据库是类型兼容的,并且您为客户端编写的任何查询都保证也适用于您的服务器。

IMO是MS数据库堆栈(不包括访问)的一大优势,它们具有兼容的解决方案,可以满足您从桌面到多数据中心集群的所有工作。 如果您的应用程序规模发生变化,或者您需要在两个不同类别的应用程序之间发送数据,那么您的数据库层将得到处理。

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

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

团队基础(TFS)就是这样来自微软的GUI …

因为这已经回答了。 我必须提到使用CLR语言时,CLR / .NET Framework集合将MS SQL Server 2005/2008与其他语言区分开来。 以下摘自此处 。

通过使用Visual Basic .NET和C#等语言,您可以利用CLR集成来编写具有更复杂逻辑且更适合计算任务的代码。 此外,Visual Basic .NET和C#提供了面向对象的function,如封装,inheritance和多态。 您可以轻松地将相关代码组织到类和命名空间中,这意味着您在处理大量代码时可以更轻松地组织和维护代码投资。 将代码逻辑地和物理地组织到程序集和命名空间中的能力是一个巨大的好处,使您能够在大型数据库实现中更好地查找和关联不同的代码段。

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