Welcome 微信登录

首页 / 网页编程 / ASP.NET / Entity Framework学习高级篇1—改善EF代码的方法(上)

Entity Framework学习高级篇1—改善EF代码的方法(上)2010-02-05 博客园 ♂风车车.Net本节,我们将介绍一些改善EF代码的相关方法,如NoTracking,GetObjectByKey, Include等。

l MergeOption.NoTracking

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

[Test]

public void NoTrackingTest()

{

using (var db = new NorthwindEntities1())

{

//针对Customers查询将使用MergeOption.NoTracking

db.Customers.MergeOption = MergeOption.NoTracking;

var cust = db.Customers.Where(c => c.City == "London");

foreach (var c in cust)

Console.WriteLine(c.CustomerID);

//也可以这样写

//var cust1 = ((ObjectQuery<Customers>)cust).Execute(MergeOption.NoTracking);

//Esql写法

//string esql = "select value c from customers as c where c.CustomerID="ALFKI"";

//db.CreateQuery<Customers>(esql ).Execute(MergeOption.NoTracking).FirstOrDefault();

}

}

l GetObjectByKey/First

GetObjectByKey:

在EF中,使用GetObjectByKey方法获取数据时,它首先会查询是否有缓存,如果有缓存则从缓存中返回需要的实体。如果没有则查询数据库,返回需要的实体,并添加在缓存中以便下次使用。

First: 总从数据库中提取需要的实体。