데이터 필터링(EntityDataSource)

Visual Studio 2010

업데이트: 2007년 11월

EntityDataSource 컨트롤의 Where 속성은 Entity SQL 쿼리의 조건자인 WHERE 절을 나타내는 문자열입니다. 이 문자열은 수정되지 않은 상태로 개체 서비스에서 실행되는 ObjectQuery<T>로 전달됩니다. 이 쿼리는 EntityDataSource 컨트롤을 통해 조정된 데이터 소스입니다. Where 속성에 제공된 문자열은 ObjectQuery<T>Where 메서드에 전달된 문자열과 동일한 형식을 사용합니다. WHERE 절을 사용하여 쿼리를 필터링하는 방법의 예제를 보려면 방법: 데이터 필터링(Entity Framework)을 참조하십시오.

ObjectQuery<T> 클래스의 Where 메서드와 마찬가지로 Where 속성에 할당된 조건자에 매개 변수를 전달할 수 있습니다. EntityDataSource 컨트롤의 WhereParameters 속성은 쿼리의 WHERE 절에 제공할 매개 변수가 포함된 ParameterCollection을 지정합니다. WhereParameters 속성은 명명된 인수를 사용하여 Where 속성에 제공된 문자열에 지정된 매개 변수를 참조합니다.

WhereParameters 속성을 설정하지 않으면 매개 변수가 대체되지 않습니다. WHERE 절에서 앞에 "@" 기호가 나오는 모든 매개 변수 이름은 ParameterCollection에 일치하는 이름이 있어야 합니다. ParameterCollection의 매개 변수에 대해서는 Null 값이 허용되지 않습니다.

예제

다음 예제에서 .aspx 파일의 XML 태그는 컨트롤에서 값을 검색하여 Where 속성에 매개 변수로 전달합니다.

<asp:EntityDataSource ID="SalesOrderHeader" runat="server" 
  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");

EntityDataSource 컨트롤의 AutoGenerateWhereClause 속성이 true로 설정되어 있으면 컨트롤이 WhereParameters 속성에 할당된 ParameterCollection의 매개 변수에서 WHERE 절을 자동으로 생성합니다. 따라서 Where 속성에 WHERE 절을 명시적으로 할당할 필요가 없습니다. WhereParameters 속성에서 WHERE 절을 생성하려면 컬렉션에 있는 각 매개 변수의 Name 속성이 쿼리에서 반환하는 항목의 단일 속성을 나타내야 합니다.

예제

다음 예제에서는 확인란을 통해 온라인 주문 플래그를 설정한다고 가정합니다.

<asp:EntityDataSource ID="SalesOrderHeader" runat="server" 
    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>
표시: