데이터 프로젝션(EntityDataSource)

Visual Studio 2010

업데이트: 2007년 11월

Select 속성을 사용하면 EntityDataSource 컨트롤이 반환하는 개체에서 특정 속성을 프로젝션할 수 있습니다. EntityDataSource 컨트롤의 Select 속성은 Entity SQL 쿼리의 SELECT 문을 나타내는 문자열을 포함합니다. 이 문자열은 수정되지 않은 상태로 ObjectQuery<T>로 전달되며, 쿼리가 실행되면 EntityDataSource 컨트롤에 데이터가 반환됩니다. Select 속성에 제공된 문자열은 ObjectQuery<T>Select 메서드에 전달된 문자열과 동일한 형식을 사용합니다. SELECT 절을 사용하여 쿼리에 대한 프로젝션을 정의하는 방법의 예제를 보려면 방법: 익명 형식을 반환하는 쿼리 실행(Entity Framework)을 참조하십시오.

Cc488524.alert_note(ko-kr,VS.100).gif참고:

프로젝션된 데이터에는 업데이트가 지원되지 않습니다. Select 속성을 사용하여 프로젝션을 지정할 경우 데이터 바인딩에는 업데이트가 지원되지 않습니다.

다음 XML 태그에서는 Select 속성을 사용하여 Product 형식의 속성이 6개 있는 프로젝션을 지정합니다.

<asp:EntityDataSource ID="ProductDataSource" runat="server" 
    ConnectionString="name=AdventureWorksEntities" 
    DefaultContainerName="AdventureWorksEntities" 
    EntitySetName="Product" OrderBy="it.ProductID" 
    Select="it.ProductID, it.Name, it.ListPrice, 
    it.Size, it.Style, it.Weight">
</asp:EntityDataSource> 

앞의 XML 예제는 products라는 다음 ObjectQuery<T>과 같습니다.

ObjectQuery<Product> products = context.Product
    .Select(it.ProductID, it.Name, it.ListPrice, 
      it.Size, it.Style, it.Weight)
    .OrderBy("it.ProductID");

ObjectQuery<T> 클래스의 Select 메서드와 마찬가지로 Select 속성이 정의하는 프로젝션에 매개 변수를 전달할 수 있습니다. 쿼리의 SELECT 문에 대한 ParameterCollection을 지정하려면 EntityDataSource 컨트롤의 SelectParameters 속성을 정의해야 합니다. SelectParameters 속성은 명명된 인수를 사용하여 Select 속성의 매개 변수를 참조합니다.

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

다음 예제에서는 속성 프로젝션 중 하나에 매개 변수를 사용하여 쿼리의 각 Product에 90%의 할인율을 적용합니다.

<asp:EntityDataSource ID="EntityDataSource6" runat="server"
        EnableViewState="False"
        EntitySetName="Products" 
        ConnectionString="name=NorthwindContext" 
        DefaultContainerName="NorthwindContext" 
        EntityTypeFilter="Products" 
        Select="it.ProductID, it.UnitsInStock, it.ProductName,
              it.UnitPrice * @Discount as UnitPrice,
              it.UnitsOnOrder as UnitsOnOrder, it.Discontinued" 
        Where="it.ProductID < 10" 
    >
    <SelectParameters>
        <asp:Parameter Name="Discount" DefaultValue=".90"
             Type="Decimal" />
    </SelectParameters>
</asp:EntityDataSource>

표시: