EF6中DbFirst模式下使用存储过程 我们已经知道EF可以将L2E或Entity SQL的查询语句自动转换成SQL命令,也可以根据实体的状态自动生成Insert/update/delete的Sql命令.这节介绍EF中使用预先定义的存储过程对一张或者多种表进行CURD操作. EF API会新建一个function来映射数据库中的自定义函数或存储过程.下边讲解EF DbFirst模式下存储过程的用法,EF CodeFirst存储过程的用法会在以后的EF CodeFirst系列中介绍. 1.DbF…
什么是Entity Framework 学习EF的前提:熟练使用Linq和Ado.net,因为在使用EF框架进行开发时,我们大多数情况使用Linq进行查询和操作,而EF的底层实现用的是Ado.net. 1.EF的概念 在.NET3.5之前,我们经常编写ADO.NET代码或企业数据访问块来保存或检索底层数据库中的数据.做法是:打开过一个数据库的连接,创建一个DataSet来获取或提交数据到数据库,通过将DataSet中的数据和.NET对象相互转换来满足业务需求.这是一个麻烦且容易出错的过程.Mic…
1.DbContext(上下文类) 在DbFirst模式中,我们添加一个EDM(Entity Data Model)后会自动生成一个.edmx文件,这个文件中包含一个继承DbContext类的上下文实例,DbContext是实体类和数据库之间的桥梁,DbContext主要负责与数据交互,主要作用: 1.DbContext包含所有的实体映射到数据库表的实体集(DbSet < TEntity >). 2.DbContext 将LINQ-to-Entities查询转换为SQL查询并将其发送到数据库.…
EF DbFirst模式中的枚举类型使用 这一节介绍EF DbFirst模式中的Enum(枚举类型),CodeFirst模式中的Enum会在以后的EF CoreFirst系列中介绍.EF5中添加了对Enum的支持.现在Enum支持的数据类型有:Int16,int32,int63,byte,sbyte. EF中Enum的使用有两种: ① 通过EDM设计器将实体中的某一属性转换为枚举类型 ② 使用已存在的枚举 1.通过EDM设计器将实体中的某一属性转换为枚举类型 一个栗子: 我们将把Teacher表…
本文主要的目的是 1. 说明Entity Framework Power Tools如何使用. 2. Entity Framework  快速门 实验环境: OS: Windows Server 2012, Windows 7 DE: VS2013 + MVC 6.0+Entity Framework+ SQL Server 2012 准备工作 基于现有数据库生成POCO数据类和数据库上下文需要借助Visual Studio一个扩展插件-- Entity Framework Power Tool…
下图为一个已经创建好的数据库表关系 实体数据模型的创建过程 在Visual Studio项目中,右键程序集菜单,选择[添加]->[新建项],在[添加新项窗口]中选择[ADO.NET实体数据模型],如下图 在[实体数据模型向导]窗口中选择[来自数据库的EF设计器] 然后选择数据库连接,如果没有的话,可以点击新建一个连接 然后选择数据库对象 现在a School.edmx文件被添加到了项目中,在这个文件中包含了school_schema数据库中表的实体类 创建实体数据模型时自动生成的配置文件 <?…
Entity Framework简介 Entity Framework是微软提供的一个O/RM(对象关系映射)框架.它基于ADO.NET,为开发人员提供了一种自动化的机制来访问和存储数据库中的数据. 微软官方对Entity Framework的定义: The Microsoft ADO.NET Entity Framework is an Object/Relational Mapping (ORM) framework that enables developers to work with…
1.预先加载 预先加载:在对一种类型的实体进行查询时,将相关的实体作为查询的一部分一起加载.预先加载可以使用Include()方法实现. 1.加载一个相关实体类型 栗子:使用Include()方法从数据库中获取所有学生及成绩级别.导航属性实现预先加载: using (var ctx = new SchoolDBEntities()) { var stud1 = ctx.Students .Include("Standard") .Where(s => s.StudentName…
附加离线实体图集到上下文 这节主要内容是通过不同的方法将离线实体附加到上下文中. 在离线场景中,保存一个实体要略微困难一些.当我们保存一个离线的实体图集或一个单独的离线实体时,我们需要做两件事.首先,我们要把实体附加到新的上下文中,让上下文了知道存在这些实体.其次,我们需要手动设置每个实体的EntityState,因为新的上下文不知道这些离线实体都经过了些什么操作,所以新的上下文不能自动地给实体添加EntityState. 下图说明了此过程. 为了将离线实体附加到上下文,并为实体图中的每个实体设…
EF中的高并发 这里只介绍EF6中database-first开发方案的高并发解决方案,code-first开发方案中的高并发会在以后的EF CodeFirst系列中介绍. EF默认支持乐观并发:我们从数据库加载了一条数据,这是有人修改了这条数据,而我们手中用的还是旧数据,这就出现了脏读,这个时候我们修改了这条数据然后执行SaveChange()会发生什么呢?EF在保存数据时会首先查看数据库中的数据有没有改变过,数据没有改变就执行保存:数据改变了会抛出异常,我们再次提交前必须解决冲突(提到解决冲…