1.预先加载 预先加载:在对一种类型的实体进行查询时,将相关的实体作为查询的一部分一起加载.预先加载可以使用Include()方法实现. 1.加载一个相关实体类型 栗子:使用Include()方法从数据库中获取所有学生及成绩级别.导航属性实现预先加载: using (var ctx = new SchoolDBEntities()) { var stud1 = ctx.Students .Include("Standard") .Where(s => s.StudentName…
EF中的高并发 这里只介绍EF6中database-first开发方案的高并发解决方案,code-first开发方案中的高并发会在以后的EF CodeFirst系列中介绍. EF默认支持乐观并发:我们从数据库加载了一条数据,这是有人修改了这条数据,而我们手中用的还是旧数据,这就出现了脏读,这个时候我们修改了这条数据然后执行SaveChange()会发生什么呢?EF在保存数据时会首先查看数据库中的数据有没有改变过,数据没有改变就执行保存:数据改变了会抛出异常,我们再次提交前必须解决冲突(提到解决冲…
这一节介绍DbContext追踪实体的变化.EF支持DbContext在其生命周期中自动追踪加载的实体.我们可以通过DbChangeTracker类获取DbContext追踪的所有实体的变化. 注意每个实体必须有主键值才能被上下文追踪.概念模型中的实例如果没有主键值,DbContext不会对其执行追踪. 下边的代码显示了DbContext追踪实体状态变化过程 static void Main(string[] args) { using (var ctx = new SchoolDBEntiti…
什么是Entity Framework 学习EF的前提:熟练使用Linq和Ado.net,因为在使用EF框架进行开发时,我们大多数情况使用Linq进行查询和操作,而EF的底层实现用的是Ado.net. 1.EF的概念 在.NET3.5之前,我们经常编写ADO.NET代码或企业数据访问块来保存或检索底层数据库中的数据.做法是:打开过一个数据库的连接,创建一个DataSet来获取或提交数据到数据库,通过将DataSet中的数据和.NET对象相互转换来满足业务需求.这是一个麻烦且容易出错的过程.Mic…
EF6中DbFirst模式下使用存储过程 我们已经知道EF可以将L2E或Entity SQL的查询语句自动转换成SQL命令,也可以根据实体的状态自动生成Insert/update/delete的Sql命令.这节介绍EF中使用预先定义的存储过程对一张或者多种表进行CURD操作. EF API会新建一个function来映射数据库中的自定义函数或存储过程.下边讲解EF DbFirst模式下存储过程的用法,EF CodeFirst存储过程的用法会在以后的EF CodeFirst系列中介绍. 1.DbF…
本文主要的目的是 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…
[环境安装] 可以通过NuGet直接搜索安装SQLite需要用到的组件 或者直接使用程序包管理器控制台 > Install-Package System.Data.SQLite 通过ADO.NET实体数据模型访问SQLite数据源之前,你需要安装 sqlite-netFx46-setup-bundle-x86-2015-1.0.105.2.exe,当然这个需要根据你使用的.NET Framework版本对应 下载地址:https://system.data.sqlite.org/index.ht…
Entity Framework支持的查询方式有三种 LINQ to Entities Entity SQL Native SQL [LINQ to Entities] LINQ(语言集成查询)是从Visual Studio 2008开始引入的功能,在C#中可以使用LINQ查询不同的数据源.LINQ-to-Entities在entity framework上的操作,可以访问底层数据库中 的数据.以下是LINQ查询语法示例: public course FindWith(int id) { usi…
下图为一个已经创建好的数据库表关系 实体数据模型的创建过程 在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…