Entity Framework学习高级篇2—改善EF代码的方法(下)

本节,我们将介绍一些改善EF代码的方法,包括编译查询、存储模型视图以及冲突处理等内容。

l CompiledQuery

提供对查询的编译和缓存以供重新使用。当相同的查询需要执行很多遍的时候,那么我们可以使用ComplieQuery将查询的语句进行编译以便下次使用,这样可以免去对同一语句的多次处理,从而改善性能。

示例代码如下:

[Test]

public void ComplieTest()

{

using (var db = new NorthwindEntities1())

{

//对查询进行编译

var customer = CompiledQuery.Compile<NorthwindEntities1, IQueryable<Customers>>(

(database) => database.Customers.Where(c => c.City == "London"));

//执行20次相同的查询

for (int i = 0; i < 20; i++)

{

DateTime dt = System.DateTime.Now;

foreach (var c in customer(db))

Console.WriteLine(c.CustomerID);

Console.WriteLine(DateTime.Now.Subtract(dt).TotalMilliseconds);

Console.WriteLine("---------------------------------------------------");

}

}

}

时间: 2024-10-30 01:13:11

Entity Framework学习高级篇2—改善EF代码的方法(下)的相关文章

Entity Framework学习高级篇1—改善EF代码的方法(上)

本节,我们将介绍一些改善EF代码的相关方法,如NoTracking,GetObjectByKey, Include等. l MergeOption.NoTracking 当我们只需要读取某些数据而不需要删除.更新的时候,可以指定使用MergeOption.NoTracking的方式来执行只读查询(EF默认的方式是AppendOnly).当指定使用NoTracking来进行只读查询时,与实体相关的引用实体不会被返回,它们会被自动设置为null .因此,使用NoTracking可以提升查询的性能.示

Entity Framework学习中级篇5—使EF支持Oracle9i

从Code MSDN上下载下来的EFOracleProvider不支持Oracle9i.但是,目前我所使用的还是Oracle9i.为此,对EFOracleProvider修改了以下,以便使其支持Oracle9i. 下面说说具体修改地方.(红色部分为添加或修改的代码部分) 一,修改EFOracleProvider 1,修改EFOracleProviderManifest.cs类文件, internal const string TokenOracle9i = "9i";//add by

Entity Framework学习中级篇1—EF支持复杂类型的实现

本节,将介绍如何手动构造复杂类型(ComplexType)以及复杂类型的简单操作. 通常,复杂类型是指那些由几个简单的类型组合而成的类型.比如:一张Customer表,其中有FristName和LastName字段,那么对应的Customer实体类将会有FristName和LastName这两个属性.当我们想把FirstName和LastName合成一个名为CustomerName属性时,此时,如果要在EF中实现这个目的,那么我们就需要用到复杂类型. 目前,由于EF不能显示支持复杂类型,所以我们

Entity Framework学习初级篇2

Entity Framework 学习初级篇2--ObjectContext.ObjectQuery.ObjectStateEntry.ObjectStateManager类的介绍 本节,简单的介绍EF中的ObjectContext.ObjectQuery.ObjectStateEntry.ObjectStateManager这个几个比较重要的类,它们都位于System.Data.Entity.dll下的System.Data.Objects命名空间下.在后续的章节中,我们经常会用到它们的某些方

Entity Framework学习初级篇1--EF基本概况

最近在学习研究微软的EF,通过这时间的学习研究,感觉这个EF目前来说还不是很完善,半成品.不过,据说在.Net4.0中,微软将推荐使用此框架,并会有所改善.而且,现在基本上所有数据库均提供了对EF的支持.因此,为以后做技术准备可以学习研究以下.但是,我个人觉得就目前来说,在实际项目慎用此框架. 下面简单的介绍以下这个EF. 在.Net Framework SP1微软包含一个实体框架(Entity Framework),此框架可以理解成微软的一个ORM产品.用于支持开发人员通过对概念性应用程序模型

Entity Framework学习中级篇3—存储过程(中)

目前,EF对存储过程的支持并不完善.存在以下问题: l EF不支持存储过程返回多表联合查询的结果集. l EF仅支持返回返回某个表的全部字段,以便转换成对应的实体.无法支持返回部分字段的情况. l 虽然可以正常导入返回标量值的存储过程,但是却没有为我们自动生成相应的实体.cs代码,我们还是无法在代码中直接调用或使用标量存储过程 l EF不能直接支持存储过程中Output类型的参数. l 其他一些问题. 本节,我们将学习如何手动添加/修改存储过程,如何使EF能够支持Output类型的参数. l 添

Entity Framework学习初级篇7--基本操作:增加、更新、删除、事务

本节,直接写通过代码来学习.这些基本操作都比较简单,与这些基本操作相关的内容在之前的1至6节基本介绍完毕. l 增加: 方法1:使用AddToXXX(xxx)方法:实例代码如下: using (var edm = new NorthwindEntities()) { Customers c = new Customers { CustomerID = "c#", City = "成都市", Address = "中国四川省", CompanyNa

Entity Framework学习初级篇6--EntityClient

System.Data.EntityClient 命名空间是实体框架的.NET Framework数据提供程序.EntityClient 提供程序使用存储特定的ADO.NET数据提供程序类和映射元数据与实体数据模型进行交互.EntityClient首先将对概念性实体执行的操作转换为对物理数据源执行的操作.然后再将物理数据源返回的结果集转换为概念性实体. EntityClient下的类有以下几个: l EntityConnection l EntityCommand l EntityConnect

Entity Framework学习初级篇5--ObjectQuery查询及方法

ObjectQuery 类支持对实体数据模型(EDM)执行LINQ to Entities和Entity SQl查询.ObjectQuery还实现了一组查询生成器方法,这些方法可用于按顺序构造等效于Entity SQl的查询命令.下面是ObjectQuery的查询生成器方法以及等效的Entity SQl语句: Distinct,Except,GroupBy,Intersect,OfType,OrderBy,Select,SelectValue,Skip,Top,Union,UnionAll,Wh