首页 / 网页编程 / 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/FirstGetObjectByKey:在EF中,使用GetObjectByKey方法获取数据时,它首先会查询是否有缓存,如果有缓存则从缓存中返回需要的实体。如果没有则查询数据库,返回需要的实体,并添加在缓存中以便下次使用。First: 总从数据库中提取需要的实体。