共用方式為


篩選資料 (EntityDataSource)

更新:2007 年 11 月

EntityDataSource 控制項的 Where 屬性為表示 WHERE 子句 (Entity SQL 查詢述詞) 的字串。這個字串不會經過任何修改,且會傳入由物件服務執行的 ObjectQuery<T>。這個查詢為由 EntityDataSource 控制項所規範的資料查詢。指定給 Where 屬性的字串使用的格式,與傳遞給 ObjectQuery<T>Where 方法的字串相同。如需使用 WHERE 子句篩選查詢的範例,請參閱 HOW TO:篩選資料 (Entity Framework)

傳遞參數

ObjectQuery<T> 類別的 Where 方法類似,參數可以傳入指派給 Where 屬性的述詞。EntityDataSource 控制項的 WhereParameters 屬性會指定包含要提供給查詢中 WHERE 子句之參數的 ParameterCollectionWhereParameters 屬性會使用具名引數,參考提供給 Where 屬性之字串中指定的參數。

如果沒有設定 WhereParameters 屬性,則不會產生參數替代。WHERE 子句中所有參數名稱,如果前置字元符號為 "@",,在 ParameterCollection 中都必須有一個對應的名稱。ParameterCollection 中的參數不允許為 Null 的值。

範例

下列範例中的 XML 標記在 .aspx 檔案中,會從控制項擷取值,並將其傳入 Where 屬性做為參數。

<asp:EntityDataSource ID="SalesOrderHeader"  
  ConnectionString="name=AdventureWorksEntities" 
  DefaultContainerName="AdventureWorksEntities" EnableDelete="True" 
  EnableInsert="True" EnableUpdate="True" EntitySetName="SalesOrderHeader" 
  EntityTypeFilter="" OrderBy="it.TotalDue DESC" Select="" 
   Where="it.OnlineOrderFlag = TRUE AND it.TotalDue &gt; @ordercost">
  <WhereParameters>
    <asp:ControlParameter ControlID="costLimit" DbType="Int32" 
      DefaultValue="2500" Name="ordercost" PropertyName="Text" />
  </WhereParameters>
</asp:EntityDataSource>

上一個 XML 範例與以下名稱為 onlineOrders 的 ObjectQuery<T> 相同:

ObjectQuery<SalesOrderHeader> onlineOrders =
      context.SalesOrderHeader
       .Where("it.OnlineOrderFlag = TRUE AND it.TotalDue > @ordercost",
         new ObjectParameter("ordercost", orderCost))
        .OrderBy("it.TotalDue DESC");

自動產生 WHERE 子句

EntityDataSource 控制項的 AutoGenerateWhereClause 屬性設為 true 時,控制項會在指派給 WhereParameters 屬性的 ParameterCollection 中,自動從參數產生 WHERE 子句。這樣便不需要將 WHERE 子句明確指派給 Where 屬性。若要從 WhereParameters 屬性建構 WHERE 子句,集合中每一個參數的 Name 屬性,都要能夠識別查詢所傳回的單一項目屬性。

範例

下列範例假設核取方塊要設定線上的訂單旗標:

<asp:EntityDataSource ID="SalesOrderHeader"  
    ConnectionString="name=AdventureWorksEntities" 
    DefaultContainerName="AdventureWorksEntities" EnableDelete="True" 
    EnableInsert="True" EnableUpdate="True" EntitySetName="SalesOrderHeader" 
    EntityTypeFilter="" Select="" AutoGenerateWhereClause="True">
    <WhereParameters>
        <asp:ControlParameter ControlID="onlineOrder" DefaultValue="true" 
            Name="OnlineOrderFlag" PropertyName="Text" DbType="Boolean" />
    </WhereParameters>
</asp:EntityDataSource>

請參閱

概念

設定 EntityDataSource 控制項

EntityDataSource 設計工具

其他資源

物件服務概觀 (Entity Framework)

查詢產生器方法 (Entity Framework)