前言
昨天师父给我验收ssh网上商城,问了我几个问题,但是我都回答不上来,于是师父叫我把这些问题几下来,在接下来的ssh架构学习里就带着这问题学习。可是对于EF和ORM这两块知识理解真的不多,所以今天就回来看看第一次进入ITOO时候发的资料。一天学习下来,对于EF框架和ORM框架也算是有了一个大致了解。
ORM
O为Object,即对象,R为Relational ,即关系,M为 Mapping,映射。ORM也就是对象关系映射,用于实现面向对象编程语言里不同类型系统的数据之间的转换。ORM框架帮助我们跟踪所有表实体的变化,并将实体的变化翻译成sql脚本,并执行到数据库里面去,也就是讲实体的变化映射到数据库表的变化。ORM最基本的工作就是翻译sql脚本。
它的执行过程如下图:
EF
EF也就是Entity Framework,ADO.NET Entity Framework是微软以ADO.NET为基础所发展出来的对象关系(ORM)解决方案,早期被称为ObjectSpace。EF是asp.net MVC与ADO.NET 相对应的关系,EF是ADo.net中的一组支持开发面向数据的软件应用程序的技术。EF跟踪实体变化,然后将实体变化映射到数据库中的表,EF和Hibernate一样是实现ORM这种思想的一种框架。所以EF和Hibernate的理念是一样的。
应用程序通过EF操作数据库
ORM提供的不只是描述不同对象间的关系的一个简单而直接的方式,更重要的是ORM提供了灵活性,使得我们操作数据库更加简便灵活。而且可以通过配置文件更改不同的数据库,在ITOO5.0的时候,我们把sql server数据库改成了MySQL数据库,从中虽然遇到了一些问题,但我们也从中感觉到了EF的灵活性。
下面以T_student表为例子进行增删改查操作,前面的ADO.net实体数据模型的具体转换步骤我就省了,直接到了代码。
添加数据库里的实体信息
<span style="font-size:18px;"> //所有对数据库的第一个操作就是创建数据库的访问的上下文
JFHZEntities dbcontext = new JFHZEntities();
T_Student student = new T_Student();
//设置实体
student.Class = "11";
student.Department = "文学院";
student.Grade = "大四";
student.Sex = "女";
student.StudentName = "杨月娥";
student.StudentNo = "11";
dbcontext.T_Student.Add(student);//代表往Dbcontext指向的数据中的student表添加一条数据:student
dbcontext.SaveChanges();//真正的保存到数据库</span>
修改数据库里的实体信息
<span style="font-size:18px;"> //所有对数据库的第一个操作就是创建数据库的访问的上下文
JFHZEntities dbcontext = new JFHZEntities();
T_Student student = new T_Student();
//设置实体
student.Class = "11";
student.Department = "文学院";
student.Grade = "大四";
student.Sex = "女";
student.StudentName = "杨月娥";
student.StudentNo = "11";
// //修改实体
//第一步:将当前实体附加到上下文里面来进行管理
dbcontext.T_Student.Attach(student);
//把上下文dbcontext跟踪的实例:T_student的状态改成修改状态
dbcontext.Entry<T_Student>(student).State = EntityState.Modified;
dbcontext.SaveChanges();</span>
删除数据库里的实体信息
<span style="font-size:18px;"> JFHZEntities dbcontext = new JFHZEntities();
T_Student student = new T_Student();
student.StudentNo = "11";
//第一步:将当前实体附加到上下文里面进行管理
dbcontext.T_Student.Attach(student);
//把上下文dbcontext跟踪的实例:T_Student的状态改修改状态
dbcontext.Entry<T_Student>(student).State = EntityState.Deleted;
dbcontext.SaveChanges();</span>
查询数据库里的实体信息
foreach (var student in item)
{
Console.WriteLine(student.StudentNo + student.StudentName);
}
List<T_Student> listResult = new List<T_Student>();
总结
这次学习下来即使复习也是学习,把以前落下的补回来,收获了不少,总算是弄明白了ORM和EF这两个知识点。还是不要害怕回去复习,因为复习有时候是为了更好的往下走。