程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> Entity Framework學習高級篇1—改善EF代碼的方法(上)

Entity Framework學習高級篇1—改善EF代碼的方法(上)

編輯:關於ASP.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: 總從數據庫中提取需要的實體。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved