昨天师父给我验收ssh网上商城,问了我几个问题,但是我都回答不上来,于是师父叫我把这些问题几下来,在接下来的ssh架构学习里就带着这问题学习。可是对于EF和ORM这两块知识理解真的不多,所以今天就回来看看第一次进入ITOO时候发的资料。一天学习下来,对于EF框架和ORM框架也算是有了一个大致了解。
O为Object,即对象,R为Relational ,即关系,M为 Mapping,映射。ORM也就是对象关系映射,用于实现面向对象编程语言里不同类型系统的数据之间的转换。ORM框架帮助我们跟踪所有表实体的变化,并将实体的变化翻译成sql脚本,并执行到数据库里面去,也就是讲实体的变化映射到数据库表的变化。ORM最基本的工作就是翻译sql脚本。
它的执行过程如下图:
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的理念是一样的。
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这两个知识点。还是不要害怕回去复习,因为复习有时候是为了更好的往下走。