【问题标题】:DataTables are old fashioned?数据表是老式的?
【发布时间】:2012-10-29 14:40:37
【问题描述】:

我是一名年轻的开发人员,并不真正了解访问数据库和从中获取数据的许多不同方法。我知道的一种方法是使用 DataAdaptor 和 SQLcommand 和数据库团队提供的存储过程来连接数据库并将数据填充到 DataTable 中。然后我使用数据表进行处理,或者将其绑定到gridview等以进行显示。

但是当审阅者审阅我的代码时,他说数据表是非常老式的方式。他说他宁愿使用物体或其他东西,但我不知道。

那么有没有更好(或现代)的方式来连接数据库并从中获取数据?这是一个笼统的问题,与我的程序真正做的事情无关。

【问题讨论】:

    标签: datatable dataadapter sqldataadapter


    【解决方案1】:

    在 Java 世界已经使用 ORM 多年的 .NET 1.0 时代,它们是一个愚蠢的想法。当 ADO(不是 ADO.NET)发布并且 ORM 已经在 J​​ava 世界中使用时,这是一个愚蠢的想法,而我在 Visual Basic(不是 .NET)中使用了一个。

    学习正确的 OO 编程。几乎所有使用 Datasets 的人都表明他只看过 MS “如何快速制作 UI”的示例,而从未学习过 troper 面向对象的编程实践。

    我不会将 15 年的成熟技术称为“现代”。

    例如,您应该了解 LINQ。实体框架 - 两者都是 .NET Framework 的一部分,而且现在已经有一段时间了(从 4.0 开始)。

    这不是关于“年龄”,而是关于知道你在做什么。并阅读文档一次。当一个“年轻厨师”只知道辣椒时,他不是厨师,他是一招制小马。不知道从数据库中获取数据的所有方法的“年轻”(不是实习生).NET 开发人员不是 .net 开发人员 - 因为他错过了一次阅读文档。询问详细信息是可以的 - 但没有听说过实体框架是......好吧,从未阅读过文档的somoene。

    又一次。 ORM 并不新鲜。它们存在于 .NET 1.0 时代,它们存在于旧的 Visual Basic 时代。

    【讨论】:

      【解决方案2】:

      您的同事可能精通诸如 nHibernate 和 Entity Framework 之类的 ORM,它们为您的数据库提供了面向对象的抽象。

      对象关系映射器安全且自动地执行许多“粘合”任务。数据库关系等足够体面的例子。

      在 MVC 空间中,呈现给服务器的对象通常没有关于底层数据访问结构的信息。

      我仍然在一些非常有限的情况下使用 DataTable。我想我的主要担忧是:-

      • 非常通用的解决方案。不是特定领域的。

      将此与旨在执行特定工作的专用课程进行对比。

      • 大量耦合,大量错误检查,或两者兼而有之。

      通常,您会希望使用 DataTable 来填充其他内容。要正确执行此操作,您需要检查 NULLS 等,通常使用以下内容:-

      string thing = (row["Thing"] == DBNull.Value ) ? string.Empty : (string)thing;
      

      这是繁重、耗时且容易出错的。

      不过,大多数情况下,它是人们直接从数据库中提取并在网页上发布的时代的产物。如今,在 n 层产品之间存在多个抽象层,而 DataTable 是您从 ORM 获得的花里胡哨的相当糟糕的替代品。

      【讨论】:

      • 谢谢..你的回答也帮助我更多地了解编程..我只需要选择第一个好的答案..
      猜你喜欢
      • 2015-04-28
      • 1970-01-01
      • 2021-05-28
      • 2014-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-06
      相关资源
      最近更新 更多