在 Visual Studio 中透過 EntityDataSource 的智慧標籤功能「Configure Data Source」設定好連接的物件和選取的屬性之後,我們可以從 .aspx 網頁原始碼中看到 EntityDataSource 控制項的 Select 屬性值有一些以 "it." 開頭的字串,如底下範例程式碼的第 4 行:
EntityDataSource.Select 屬性(以及 Where、OrderBy 等)的內容是 Entity SQL 語法,而 "it.[CustomerID]" 的 "it" 則是建立此查詢時所傳回的投射(projection)物件的別名,而且是 EntityDataSource 內定的預設別名。如果你任意去改它,執行網頁時就會發生錯誤。
如果你是使用 CommandText 屬性來指定完整的 Entity SQL 查詢命令(也會建立資料的投射,也無法異動資料),這樣的話,就是由你決定這個物件的別名。
或者,如果是在執行時期透過 ObjectContext 類別來查詢資料,此時也可以利用你的 ObjectQuery 物件來設定這個別名,例如:
延伸閱讀
<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"); }
延伸閱讀
沒有留言: