ORM对象关系映射,对象即实体,关系即关系数据库表。ORM即实现从实体对象关系数据库数据的映射。

本质上就是将数据从一种形式转换到还有一种形式。它详细又有哪些表现呢。咱们一步步学习,一步步分析。

ORM攻克了什么问题?

  

  想想曾经使用的三层开发,在D层对数据库的操作基本能够归纳为下面几点问题:

1、使用DataSet/DataTable填充返回数据。

  DataSet的结构就相当于一张表,使用DataSet
,需要取得某一数据时是必需要知道表结构的(列名或者列的序号)。这不仅违反了三层分层的思想,也不符合面向对象的特点,由于DataSet是一个仅仅知道存储行和列的对象,而且不能像实体那样获取属性,也不能像DataSet加入方法。可是DataSet并非一无用处。它也算是神级的存在吧。使用方便,适合业务简单,小型的开发。

2、将DataSet/DataTable转化成实体及实体集返回(反射及泛型)。

  攻克了面向对象的问题。但问题远不止如此。

3、反复的方法,除了sql语句和实体不同外。其它的都一样。

4、即使用了抽象工厂加反射,假设要更换数据库,还须要写一套其他数据库的D层。

  综上所述,DataSet非面向对象的特点。sql语句使业务逻辑(包含D层)与数据库之间形成高耦合。使得代码复用性低,维护繁琐,更换数据库工作量大等等一些问题。

那有没有方法解决以上问题呢?——ORM

核心理念

  

  来看看ORM核心理念:

  1、简单:ORM以最主要的形式建模数据。比方ORM会将数据库的一张表映射成一个实体类。表的字段就是这个类的成员变量

  2、精确:ORM使全部的数据表都依照统一的标准精确地映射成实体类,使系统在代码层面保持准确统一

  3、易懂:ORM使数据库结构文档化。

数据库被ORM转换为了程序猿能够读懂的实体类,程序猿能够仅仅把注意力放在业务对象。

  4、易用:ORM的避免了不规范、冗余、风格不统一的SQL语句,能够避免非常多人为Bug,方便编码风格的统一和后期维护。

.NET中的ORM框架

NHibernate。EntityFramework,这两种框架兴许博客在研究。他们也是对ORM的实现,而且包括了事务,缓存。延迟载入等等。

事实上对ORM很多其它的还是疑问:

1、ORM不用自己写SQL语句,可是一些复杂的,特殊的sql查询呢?

2、实体和关系怎样映射在一起的?

3、Attribute特性

4、Linq,Lambda表达式

小结

为什么用ORM已经说的非常明确了,对照曾经的开发以及维护的经历。ORM可以够给我们的优点非常多。ORM一步步深入研究中。

本文也是依据自己以往的开发经历和近期对ORM的研究总结的,新手入门,多多指正!

.NET进阶——ORM基础认识的更多相关文章

  1. ORM基础知识

    ORM基础知识 一.什么ORM? ORM是Object Relactional Mapping的缩写,即对象关系映射,是将关系型数据库中的数据库结构映射成对象,就可以通过面向对象思想编程. 二.常用的 ...

  2. Python进阶----线程基础,开启线程的方式(类和函数),线程VS进程,线程的方法,守护线程,详解互斥锁,递归锁,信号量

    Python进阶----线程基础,开启线程的方式(类和函数),线程VS进程,线程的方法,守护线程,详解互斥锁,递归锁,信号量 一丶线程的理论知识 什么是线程:    1.线程是一堆指令,是操作系统调度 ...

  3. Python进阶----计算机基础知识(操作系统多道技术),进程概念, 并发概念,并行概念,多进程实现

    Python进阶----计算机基础知识(操作系统多道技术),进程概念, 并发概念,并行概念,多进程实现 一丶进程基础知识 什么是程序: ​   程序就是一堆文件 什么是进程: ​   进程就是一个正在 ...

  4. 深入理解Magento – 第四章 – 模型和ORM基础

    深入理解Magento 作者:Alan Storm 翻译:Hailong Zhang 第四章 – 模型和ORM基础 对于任何一个MVC架构,模型(Model)层的实现都是占据了很大一部分.对于Mage ...

  5. django 基础进阶ORM 2

    1.多表操作 添加记录: 针对一对多 book_obj=Book.objects.create(title="python葵花宝典",price=100,publishDate=& ...

  6. django 基础进阶ORM COOKIE

    ORM: class Book(models.Model): title=models.CharFiled(max_length=32) 类-----------------表    #  Book- ...

  7. 4、JavaScript进阶篇①——基础语法

    一.认识JS 你知道吗,Web前端开发师需要掌握什么技术?也许你已经了解HTML标记(也称为结构),知道了CSS样式(也称为表示),会使用HTML+CSS创建一个漂亮的页面,但这还不够,它只是静态页面 ...

  8. day 67 django 之ORM 基础安装

    一 ORM的基础部分 1 ORM的概念 对象关系映射(Object Relational Mapping(映射),简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. 2   ...

  9. Magento模型和ORM基础

    对于任何一个MVC架构,模型(Model)层的实现都是占据了很大一部分.对于Magento来说,模型占据了一个更加重要的位置,因为它常常包含了一部分商业逻辑代码(可以说它对,也可以说它错).这些代码在 ...

随机推荐

  1. 计算机组成原理--64位CPU装载32位操作系统,它的寻址能力还是4GB吗?

    借由这个问题,今天我们就把 32 位 CPU.64 位 CPU.32 位操作系统.64 位操作系统之间的区别与联系彻底搞清楚.对于这个问题,博主也是一知半解了好长时间啊~ 基本概念 32位的CPU与6 ...

  2. [LOJ2422]【NOIP2015】斗地主

    大名鼎鼎的NOIP2015D1T3 题意: 由于一些众所周知的原因,没有完整题面…… 给你一副斗地主的手牌(牌数<=23),问最少要几次能出完: 包含双王,没有癞子,连对要三连对以上,可以直接出 ...

  3. MFC基础知识

    1.句柄:具有内存后,系统返回的标识符 2.消息:相当于事件,例如鼠标点击就是一个消息 3.消息队列:就是将事件按照时间的先后顺序在一个队列中 4.消息处理机制:首先操作系统拿到消息,然后将消息放到消 ...

  4. codevs 1288 埃及分数 (迭代加深搜索)

    题目大意:给你一个分数$a/b$,把它拆解成$\sum_{i=1}^{n}1/ai$的形式,必须保证$ai$互不相同的情况下,尽量保证n最小,其次保证分母最大的分数的分母最小 什么鬼玄学题!!! 因为 ...

  5. 【转载】spring boot 链接 虚拟机(Linux) redis

    原文:https://www.imooc.com/article/43279?block_id=tuijian_wz 前提是你已经安装redis且支持远程连接,redis的安装这里不再赘述,有需要的可 ...

  6. spring boot ---web应用开发-错误处理

    一.错误的处理 方法一:Spring Boot 将所有的错误默认映射到/error, 实现ErrorController @Controller @RequestMapping(value = &qu ...

  7. vi 学习记录

    i 光标所在前插入 I 光标所在行的第一个非空字符前进入输入模式 a 光标所在后插入 A 光标所在最后插入 o 光标所在列下新增一列并进入输入模式 O 光标所在列上新增一列并进入输入模式 退出 :q, ...

  8. scratchIDE使用说明

    scratchIDE使用说明

  9. 深度学习系列之ANN

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd3F0aGFoYQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA ...

  10. 8、java高级面向对象-重载、构造器重载、初始化块、this、super、对象构造和初始化分析、覆盖、toString

    1.方法的重载(overload) 同一个类中同时存在一个以上的同名函数,参数个数或类型不同或顺序不同,称为方法的重载. 和返回值无关! 构造器重载:非默认构造器和默认构造器其实就是方法的重载. 2. ...