EntityDataSource.Select 屬性值裡面的 "it" 是什麼?

在 Visual Studio 中透過 EntityDataSource 的智慧標籤功能「Configure Data Source」設定好連接的物件和選取的屬性之後,我們可以從 .aspx 網頁原始碼中看到 EntityDataSource 控制項的 Select 屬性值有一些以 "it." 開頭的字串,如底下範例程式碼的第 4 行:


<asp:EntityDataSource ID="EntityDataSource1" ConnectionString="name=NorthwindEntities" runat=…
    DefaultContainerName="NorthwindEntities" EnableFlattening="False"
    EntitySetName="Customers" OrderBy="it.CustomerID"
    Select="it.[CustomerID], it.[CompanyName], it.[Country]" >
</asp:EntityDataSource>


EntityDataSource.Select 屬性(以及 Where、OrderBy 等)的內容是 Entity SQL 語法,而 "it.[CustomerID]" 的 "it" 則是建立此查詢時所傳回的投射(projection)物件的別名,而且是 EntityDataSource 內定的預設別名。如果你任意去改它,執行網頁時就會發生錯誤。

如果你是使用 CommandText 屬性來指定完整的 Entity SQL 查詢命令(也會建立資料的投射,也無法異動資料),這樣的話,就是由你決定這個物件的別名。

或者,如果是在執行時期透過 ObjectContext 類別來查詢資料,此時也可以利用你的 ObjectQuery 物件來設定這個別名,例如:

using (NorthwindEntities context = new NorthwindEntities())
{
    context.Customers.Name = "cust"; // 把 "it" 改成 "cust"
    
    ObjectQuery<Customers> customersQuery =
        context.Customers.OrderBy("cust.CustomerID");    
}    

延伸閱讀
Copyright © 2012. Huan-Lin 學習筆記 - All Rights Reserved
Powered by Blogger
Template Design by Cool Blogger Tutorials
Published by Templates Doctor