8

我正在制定一个小项目计划,当我需要决定使用什么本地数据库系统时,我发现了这一点。

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

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

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

正如威尔在他的回答中提到的那样——是的,我追求的是性能和使用的舒适度。

4

12 回答 12

13

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

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

于 2008-10-06T12:28:40.733 回答
8

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

过去,您会使用 Access 数据库来处理这类事情。但是Access数据库有点打击。

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

于 2008-10-06T12:30:08.703 回答
2

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

于 2008-10-06T13:01:53.100 回答
1

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

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

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

于 2008-10-06T12:49:32.110 回答
0

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

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

于 2008-10-06T12:23:25.720 回答
0

“显而易见”的选择是 MS SQL Server Express。VS 和 .net 本身都支持它,如果您已经使用过它(对于主数据库),我当然会很想坚持使用它(或其快速版本)。

但这肯定不是您选择的终点。我经常将 SQLite 用于跨平台应用程序和 Web 应用程序。它的速度快得令人瞠目结舌,而且它确实通过System.Data.SQLite很好地集成了——尽管不像 MS SQL Server 那样紧密。

还有一个紧凑版的 SQL Server,与 SQLite 相比非常好。

于 2008-10-06T12:32:10.290 回答
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 的主机。现在您的数据库是类型兼容的,并且您为客户端编写的任何查询都可以保证也适用于您的服务器。

IMO,MS 数据库堆栈(不包括访问权限)的一大优势是,无论您在做什么,从桌面到多数据中心集群,它们都有一个兼容的解决方案。如果您的应用程序的规模发生变化,或者您需要在两个不同类别的应用程序之间传送数据,您的数据库层就会得到处理。

于 2008-10-06T12:59:09.407 回答
0

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

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

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

于 2008-10-06T13:39:52.447 回答
0

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

于 2008-10-06T14:00:45.773 回答
0

SQL Server 正如大多数人所提到的......我的原因是因为你可以使用源代码控制将测试用例从 C# 集成到数据库......

Team Foundation (TFS) 就是来自 Microsoft 的一种 GUI...

于 2008-10-06T14:39:14.463 回答
0

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

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

于 2008-10-06T15:01:49.863 回答
-1

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

于 2008-10-06T12:36:06.897 回答