【问题标题】:Should I be using table adapters?我应该使用表适配器吗?
【发布时间】:2026-01-08 09:20:06
【问题描述】:

我正在从事一个个人项目,以了解更多关于 C# 和 .NET 的信息,特别是创建一个使用数据库的应用程序(在我的例子中是 MS SQL Server 2008)。虽然我很欣赏并不总是有明确的“正确”做事方式,但考虑到在使用旧技术/想法还是新技术/想法之间进行选择,我宁愿使用新的。例如,我对这个项目的目标之一是学习或至少熟悉 WPF,而不是像过去那样使用 WinForms。

在此基础上,在将数据保存到我的数据库并检索它方面,我一直在糊里糊涂,没有太多的方向。到目前为止,我已经设法让这两个使用TableAdapters 工作,但我觉得它们是“旧”的工作方式(我的基础是它们在 MSDN 上的 Visual Studio 2005 下列出)。首先,我在这个假设中正确吗?如果是这样,从数据库中保存和检索数据的新方法是什么?我将不胜感激每种方法提供的任何利弊。

我已经在 Google 上广泛搜索并搜索了 MSDN,但我觉得我使用的搜索词不正确,因为我只是成功地混淆了自己。

我可以使用 .NET 3.5、Visual Studio 2008 和 Microsoft SQL Server 2008。

任何指导将不胜感激。

【问题讨论】:

    标签: c# sql-server-2008 .net-3.5 tableadapter


    【解决方案1】:

    我同意 TableAdapters、DataSets、DataTables 等是“旧”的做事方式。

    “新”方式是 Linq-to-SQL、实体框架或 NHibernate。

    就个人而言,我喜欢在需要的地方结合使用 Linq-to-SQL 以及普通的 DBConnections、DataReaders 和 DTO。

    【讨论】:

      【解决方案2】:

      如果您想要在 .NET 中进行数据库访问的更新方法,我建议您研究 LINQ to SQL 或实体框架。

      【讨论】:

      • 这是我应该开始的方向,谢谢!我以前使用过 Linq,我将在这个项目中使用它。
      • 我会说 NHibernate;在我看来,这比实体框架更好。
      • 我喜欢带有 SqlCommand、SqlConnection 和 SqlDataReader 的普通 DataTables。我没有看到使用“更高级别的东西”的意义。简单的任务变得越来越复杂:我失去了控制,得到了错误的查询,新的错误,得到了更多的对象来处理,然后 - 在几天的网上搜索没有结果之后 - 我把所有的东西都改回了普通的 DT 并大喊 M$ for浪费我的时间。 (或者自己更改底层的 DataSource,这通常会引发更多错误)
      【解决方案3】:

      many many many 使用.Net 从 SQL Server 2008 检索数据的不同方法。

      表适配器不是一个坏方法;它们是 .Net Framework 的核心,易于上手且功能相当强大,尽管它们的性能不如其他选项好,而且通常需要更多内存。

      【讨论】:

        【解决方案4】:

        基本上,如果您的数据按照您想要查看的方式进行结构化,那么表格适配器是很好的选择。如果您想以与存储数据不同的方式查看数据,您可以使用表适配器执行此操作,但您失去了将更改写回数据库的能力,如果您只是生成报告,这没关系。 如果您想要查看和更改数据并且数据不在您想要查看的结构中,您需要实体框架,以便您可以查询数据以将其转换为不同的格式,并且仍然能够写回任何更改。这就是将数据从服务器调用 MV 到显示 VM

        【讨论】: