Linq to Sql、Linq、类型化数据集、ADO.NET 之间的区别

2023-11-21

我想知道这个问题有一段时间了。现在好像有很多方法不知道什么时候用什么?或者是否有必要学习它们。就像我不知道他们是否基本上做所有相同的事情,只是基本上坚持其中一个直到你掌握它然后也许看看其他的。

因此,当我参加 ASP.NET 课程时,它是我计划的一部分。

我们首先像 ADO.NET 那样,在代码中用 SQL 语句编写所有内容。然后我们转向三层架构。这是通过创建类似的类并拥有返回内容的数据集来完成的。

SQL是在课堂上写的。我个人从来没有真正喜欢这种方式,因为我总是觉得尝试正确引用很烦人,而且总体上不喜欢它。

然后我在 Asp.net 网站上找到了我非常喜欢的 3 层架构教程。他们使用类型化数据集。将数据集文件添加到 DAL 文件夹中,然后通过 GUI 制作表适配器和其他内容。然后你可以在这些 GUI 中编写你的代码,我发现它是完美的解决方案,因为现在我的 SQL 代码远离了我的代码,我不必担心引号和所有这些东西不正确或关闭连接和东西加上它甚至还有一个 SQL GUI 构建器!

然后我只需在 BLL 文件夹中创建文件并创建一个属性来获取表适配器并编写我的业务层逻辑。

我唯一不喜欢的是,因为它是键入的,如果我的东西试图返回一些新行,它会生气。

因此,当我必须连接表时,我通常必须制作一个新的表适配器。

现在好像有很多这样的人。

  • Linq -> 有些人说会取代 ADO.NET,有些人说不会。
  • Linq 到 SQL
  • ado.net

我不确定这是否是全部。可能不是。

在写这篇文章之前,我快速检查了一下 linq to sql 的内容,并看到一些帖子说 MS 正在消灭它。它们是从 2008 年开始的,所以我不知道这是否属实,但我注意到几乎所有 MVC 书籍都使用像 linq to sql 这样的内容,所以我认为不是这样。

那么是否值得切换到其他类型的数据集呢?或者各自用于不同的情况?


LINQ 本身只是 C# 3.0 中内置的一项基础技术(“语言集成查询”) - 它具有nothing本身与数据库有关。 LINQ 可用于多种事物 - 数据库、XML、内存中的对象、实体框架实体、Active Directory - 只要你能想到的。

Linq-To-SQL 是一种轻量级、简单、仅限 MS-SQLServer 的技术,它允许您轻松、良好地使用 SQL Server 表作为 .NET 应用程序中的真实对象。它是一个“对象关系映射器”,使处理数据库变得更加容易。它只是 SQL Server,微软不会进一步扩展它 - 它也可以在 .NET 4.0 中使用,但不会再进一步​​开发。

ADO.NET 是 .NET 中的基础数据访问技术 - 它使您可以访问各种数据存储(关系型和非关系型)。这是非常基本的技术——您以非常低级、原始的方式处理数据。

最重要的是,您还有 ADO.NET 数据集,它有点像 Linq-to-SQL,因为它们使处理数据库变得更加容易。与 Linq-to-SQL 相反,您不是在处理您的objects来自 .NET 代码中的域模型,但您正在处理面向数据库的行和列,就像它们存在于数据库中一样。它更直接地表示数据库中的内容,位于较低级别,与数据库布局紧密耦合,并且不像 Linq-To-SQL 对象那样“好”且易于使用 - 您处理低级行和列及其值。

如果您现在有选择,并且除了 SQL Server 之外不需要任何东西,我强烈建议您查看 Linq-to-SQL - 从原始数据库表到漂亮且易于使用的 .NET 对象的映射确实让您的生活变得更加美好轻松多了!

Marc

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linq to Sql、Linq、类型化数据集、ADO.NET 之间的区别 的相关文章

随机推荐

  • keras AssertionError:类型“experimentalOptimizer”的重复注册

    我正在尝试为 CartPole v1 游戏构建深度 Q 学习代码 但是我遇到了断言错误 AssertionError Duplicate registrations for type experimentalOptimizer 一些堆栈跟踪
  • Select2 改变容器位置

    如何调整 Select2 容器的位置 以便搜索框位于原始选择元素的正上方 如本网站所示 http www jobnisit com en 在我看来 它在用户界面方面看起来更干净 诗 抱歉 我现在无法发布图片 有两种方法可以做到这一点 1 使
  • 将 Chrome 浏览器打包到 HTML5 Android 应用程序中

    我们正在开发几个基于 Sencha 框架的 HTML5 应用程序 并考虑将它们打包到 PhoneGap 等应用程序中 然而 即使你将这些打包到应用程序中 我假设你仍然需要处理 Android 碎片问题 因为各个制造商对浏览器进行了奇怪的修改
  • 应用程序在后台时 iPhone 手电筒不工作

    您好 我正在使用基于位置的应用程序 并且想要在后台使用 iPhone 相机手电筒 不幸的是 手电筒仅在前台工作 即使代码正在执行 它也会自动关闭后台的闪光灯 我使用的代码仅在前台运行 import
  • 创建交互式弹出对话框

    我想知道是否可以使用shiny 和shinyBS 创建一个交互式弹出对话框 例如 我有一个字符串 我想更改它 并且在执行之前会出现一个对话框 询问我是否真的要更改它 如果我说 是 它就会执行 否则它会放弃更改 这是我的尝试 但我发现了两个问
  • MongoError:拓扑已关闭,请连接

    我是一名前端开发人员 试图在新的 Next 项目中拓展自己的视野 第一次学习 Node Mongo 和 GraphQL 的服务器端 Apollo 对我来说是最简单的入门方式 因为我已经在之前的项目中使用过客户端 Apollo 我一直在关注官
  • 为什么我的 C 程序中出现 ws2_32.dll 的链接器错误?

    我正在 Visual Studio 2010 中编写我的程序 我无法链接名为ws2 32 dll和我的项目 谁能告诉我该怎么做 通常您不会链接到 ws2 32 dlldirectly而是 WS2 32 Lib 您可以在 Windows SD
  • StringBuilder 和 StringBuffer 的区别

    之间的主要区别是什么StringBuffer and StringBuilder 在决定其中任何一项时是否存在任何性能问题 StringBuffer是同步的 StringBuilder is not
  • Android xml布局中的视图限制是多少

    任何人都知道在 android 布局 XML 中 可以嵌入到 XML 中的最大视图限制是多少 有限制吗 严格来说 限制 是80 当布局中有太多视图时 Lint 会报告以下内容 AndroidLintTooManyViews 描述 布局有太多
  • 从当前光标位置创建范围 Word 2010 VBA

    我有一个 docm带有用户表单的文档 在用户表单上 我有一个按钮 需要在文档中最后一个已知的光标位置插入一些内容 一些文本 用于启动 为此 我想创建一个范围 我怎样才能获得这个范围的起始位置 Selection是文档中的当前位置 Selec
  • 如何将 UIScrollView 嵌套在 UIScrollView 中,以便用户可以滚动内部 UIScrollView?

    我还没有尝试过 但我假设一旦我知道用户想要在子滚动视图中滚动 我就必须禁用父滚动视图的滚动 对吧 两个滚动视图都是水平滚动的 如何暂时禁用父级的滚动检测 或者还有其他办法吗 UIScrollView 有一个属性叫做scrollEnabled
  • 在 Bootstrap 4 的较小屏幕上隐藏一列[重复]

    这个问题在这里已经有答案了 这是 Bootstrap 4 总是让我感到困惑的一个领域 假设你有这样的布局 div class container fluid div class row div class col sm 3 col sm 3
  • 不使用递归如何抛出堆栈溢出异常?

    不使用递归如何抛出堆栈溢出异常 由于没有其他人提到过 throw new System StackOverflowException 您可以在测试或进行故障注入时执行此操作
  • VS 插件将光标下的标识符的完整类型名称复制到剪贴板中[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 是否有一个 Visual Studio 插件可以将光标下的标识符的完整类型名称复制到剪贴板中 请不要将我链接到 VS 2010 复制类 接口的完整类
  • 如何从一个具有依赖性的批处理文件启动多个批处理文件?

    我想运行一个批处理文件 启动其他批处理文件 我看了这里发布的类似问题 如何在一个 BAT 文件中运行多个 BAT 文件 我按照这个例子 特别是最后一个建议 并且它起作用了 部分 它确实启动了我需要的批处理文件 但是 为了使应用程序正常运行
  • 为什么 JavaFX 中没有 ObservableQueue?

    为什么JavaFX中没有ObservableQueue 如果我们查看 FXCollections 的 Java 9 文档 只是为了看看与 8 相比是否有任何更改 我们会看到用于创建 Observable 集 列表和映射的静态辅助方法 还有一
  • SVG 矩形忽略高度?

    这里有一个工作演示的一个矩形 我想将 height 属性移至 css好吧 它不起作用 让我一片空白 它发生在 Firefox 和 Chrome 中 它有不同的名字吗 我不明白为什么我不能使用 css 文件 填充颜 色有效 工作示例 css
  • pip install - 连接被同行重置

    当我尝试使用 pip 安装 lxml 时 出现异常 连接被对等方重置 Downloading unpacking lxml Downloading lxml 3 0 1 tar gz 3 2Mb 643Kb downloaded Excep
  • Vue 3:如何访问组件函数中的设置变量

    考虑以下使用 Vue 3 中的组合 API 的简单示例 我试图拥有一个实例test在我的组件的功能中可用
  • Linq to Sql、Linq、类型化数据集、ADO.NET 之间的区别

    我想知道这个问题有一段时间了 现在好像有很多方法不知道什么时候用什么 或者是否有必要学习它们 就像我不知道他们是否基本上做所有相同的事情 只是基本上坚持其中一个直到你掌握它然后也许看看其他的 因此 当我参加 ASP NET 课程时 它是我计