程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> Entity Framework學習初級篇5--ObjectQuery查詢及方法

Entity Framework學習初級篇5--ObjectQuery查詢及方法

編輯:關於ASP.NET

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,Where

每個查詢生成器方法返回ObjectQuery的一個新實例。使用這些方法可以構造查詢,而查詢的結果集基於前面ObjectQuery實例序列的操作。下面來看具體的代碼片斷:

l Execute方法:

using (var edm = new NorthwindEntities())

{

string esql = "select value c from NorthwindEntities.Customers as c order by c.CustomerID limit 10";

ObjectQuery<Customers> query = edm.CreateQuery<Customers>(esql );

ObjectResult<Customers> results = query.Execute(MergeOption.NoTracking);

Assert.AreEqual (results.Count(), 10);

foreach (Customers c in query)

Console.WriteLine(c.CustomerID);

}

其中需要說明的是: MergeOption這個枚舉類型的參數項,MergeOption有四種值分別是:

l AppendOnly:只追加新實體,不修改以前獲取的現有實體。這是默認行為。

l OverwriteChanges:將 ObjectStateEntry 中的當前值替換為存儲區中的值。這將使用服務器上的數據重寫在本地所做的更改。

l PreserveChanges:將替換原始值,而不修改當前值。這對於在發生開放式並發異常之後強制成功保存本地值非常有用。

l NoTracking:將不修改 ObjectStateManager,不會獲取與其他對象相關聯的關系,可以改善性能。

l GetResultType方法:返回查詢結果的類型信息.例如:

using (var edm = new NorthwindEntities())

{

string esql = "select value c from NorthwindEntities.Customers as c order by c.CustomerID limit 10";

ObjectQuery<Customers> query = edm.CreateQuery<Customers>(esql );

Console.WriteLine(query.GetResultType().ToString());

//輸出結果為:

//NorthWindModel .Customers

}

l ToTraceString方法:獲取當前執行的SQL語句。

l Where

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