• 开始写博客,学习Linq(3)


    为什么需要Linq?(摘自原文)

    读者会发现LINQ着眼于解决编程语言和数据库之间广发存在的不统一问题。

    1.常见的问题,使用.NET Framework Class Library(FCL)提供了ADO.NET,开发人员必须显式地操作数据库中的表、记录、列,而当下流行的C#语言却都是面向对象的。

    为了解决上面说的ADO.NET的问题,当然可以使用某些对象/关系映射工具,但这些工具也不是完美的,存在着自身的限制。例如,用来访问数据库的工具一般没法处理其他数据源,比如XML。

    并且有一件事情只用微软能够做到,而第三方对象/关系映射工具生厂商无法实现,那就是将数据访问以及查询功能集成至语言本身中。

    所以引入LINQ的动机主要有两个:一是微软尚没有一套数据映射解决方案;二是借助LINQ能够将查询集成至开发语言中。

    LINQ的设计目的在于,开发人员可以在其熟悉的语言中使用统一的查询访问任何数据源。

    额,我感觉这部分于前面部分有重复呢,都是使用Linq可以解决的问题。

    2.解决理念上的失调

    这部分,文字真多了,我看了好久,都有点不耐烦了。具体值得什么意思呢?

    阻抗失调,就是面向对象、关系型数据库以及xml,表现数据时并不能很好的转换(个人理解的);

    对象/关系映射,首先基础数据类型就不同,其次是理论来源于不同的数据模型,比例的是关系型数据库和面向对象的模型,然后又说编程模型也不同,最后提到了封装也是不同的。

    总而言之,就是关系型数据库和面向对象的类层次结构之间存在着差异。

    但是,我们希望将对象模型映射到关系型数据库中,一般来说,连接面向对象语言和关系型数据库的一个解决方案是使用对象/关系映射,简而言之,我们为对象/关系映射程序提供类、数据库以及映射的配置,随后映射程序将自动完成余下的工作。比如生成SQL语句、从数据库中获取数据并填充至对象中,以及将对象持久化到数据库中等。

    当然,没有那种解决方案是完美的,且对象/关系映射程序仍有改进的空间。

    总结下,无法完美的转换,可以使用对象/关系或者xml映射 程序工具来解决转换的问题。当然,也只是书中抛砖引玉,最终的解决方案就是Linq喽。

    “阻抗失调”让我们不得不在两边中选择其一作为“主要”的一边。在Linq中微软公司选择了编程语言作为主要的一边,因为修改C#和VB.NET要比修改SQL或XML容易得多。LINQ的主要理念是将数据查询和维护的工作紧密集成至编程语言中。

    LINQ打通了对象、数据库和XML之间的很多限制,允许开发人员基于相同的语言集成特性操作3种不同领域中的数据。

    这样,我有个问题,LINQ是不是包含了对象/关系或xml映射 工具的功能了,我之前是分不清Linq和EF的。

  • 相关阅读:
    Mac 终端自动补全忽略大小写
    AtCoder ABC 155F Perils in Parallel
    AtCoder ABC 155E Payment
    AtCoder ABC 155D Pairs
    AtCoder ABC 154F Many Many Paths
    牛客 边界都是1的最大正方形大小
    牛客 打印N个数组整体最大的Top K
    牛客 数组中子数组的最大累乘积
    牛客 在数组中找到一个局部最小的位置
    牛客 子矩阵最大累加和问题
  • 原文地址:https://www.cnblogs.com/158-186/p/6852652.html
Copyright © 2020-2023  润新知