我应该先学习"原生" ADO.Net,还是先学习Linq或Entity Framework?

6
当我第一次开始学习Classic ASP、VBscript和HTML时,有人告诉我去购买Dreamweaver,因为“它会让生活变得轻松”,所以我就购买了它,也因此得到了我的第一份专业工作。问题是当HTML、VBScript和Classic ASP出现问题时,我不知道该如何修复,而且在工作中呆了很多晚上,试图弄清楚我现在认为简单的问题,但显然当时对我来说并不简单(很有压力)。
话虽如此,我需要开始学习.NET中的数据访问策略,我不想再经历那样的事情了。我应该先学习原始的ADO.NET(通过“原始”,我指的是不使用ORM或Linq,而是DataAdapters和Readers),然后学习Linq或ORM,还是可以直接跳入Linq/ORM?我不想比较任何东西,我想知道什么对我作为开发人员长期来说最好。谢谢。

如果你不理解ADO.NET的工作原理,那么至少需要阅读足够的资料来在出现问题时进行修复。花费时间成为语法方面的专家可能并不重要,因为当需要时你总是可以加强学习,但是如果你对ORM实际上正在做什么没有概念,那么很有可能在某个时刻会出现问题。 - smartcaveman
1
我建议在http://programmers.stackexchange.com/上发布问题。 - Martin Liversage
8个回答

3

不必费心处理DataAdapters和Readers,它们与LINQ一样抽象。如果你对SQL比较熟悉,那么你已经准备就绪了。只需要尝试理解底层技术正在执行哪些类型的查询,这样你就会知道何时需要转换为原始SQL以改进某些内容。


没错。如果你看并理解了ORM生成的SQL,那么你就可以避免一些问题,比如选择N+1的问题。学习DataAdapters并不能帮助你解决这个问题。 - Henrik

3

这取决于你如何定义“学习”。

我认为你长期想要用于工作的是LINQ和EF,而具有ADO.Net先前经验对此并没有帮助,因为使用模型差异太大。

另一方面,了解背后发生的事情很有用(特别是关于查询和DataReaders如何映射到实际打开的数据库连接)。

我建议查看MSDN上的API,并可能阅读一些示例,但不要超过这个范围。这不应该花费太多时间,它会让你对使用模型有所感觉。如果你以后不得不面对ADO.Net,你总可以回来再学习更多。


2

理解抽象层下面的层次结构对于应对漏洞抽象很有帮助。这并不意味着您需要掌握 ADO.NET,但是了解ORM下面的层次结构将有助于您在问题不可避免地出现时解决它们。


1

作为一名开发人员,了解基础和基本原理总是更好的选择。

我认为先学习ADO.NET没有任何害处。先了解数据读取器、断开式数据集等内容,然后再转向更新的功能,如LINQ。


1

我认为你应该这样做。基本了解它不会花费很多时间。但是理解连接、命令、适配器和读取器将帮助您更快地摆脱错误。此外,我相信有时候您无法使用实体框架来解决问题,因此需要使用纯粹的ASP.NET。

祝好,马蒂亚斯


1

没有必要学习传统的ADO.Net技术来切换到linq数据访问/实体框架。但是为了更好地掌握,建议先学习它。因为有时您可能需要调试数据提供程序问题,而这可能需要基础。

直接跳跃可能会帮助您立即完成工作,但无法走得更远...


谢谢,整个“英里”评论正是我提出这个问题的原因。 - user568171

0
你应该了解数据库基础知识:事务(非常重要)、关系结构、约束等。我认为你不需要了解特定于ADO的内容,如DataAdapters。

-1

你不需要学习DataAdapters和Readers,因为这些知识无法转移到使用ORM的工作中。

更有用的是尝试查看一些复杂的查询,并在诸如SQL Server Query Analyser之类的工具中运行它们。这将显示查询花费时间的地方,并帮助您通过了解底层发生的情况来优化LINQ查询。

在LINQ查询中运行SQL Profiler也是一个好的实践。


那么,如果我从未查看过适配器或读取器,我仍然可以理解ORM或Linq中正在发生的事情吗? - user568171

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接