首页 > 代码库 > .NET进阶——ORM基础认识

.NET进阶——ORM基础认识

  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框架


NHibernateEntityFramework,这两种框架后续博客在研究,他们也是对ORM的实现,并且包含了事务,缓存,延迟加载等等。

 

其实对ORM更多的还是疑问:

 

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

2、实体和关系如何映射在一起的?

3、Attribute特性

4LinqLambda表达式

 

小结

为什么用ORM已经说的很明白了,对比以前的开发以及维护的经历,ORM能够够给我们的好处很多。ORM一步步深入研究中。

 

 

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