다음을 통해 공유


방법: Finder 메서드에 필터 설명자 추가

필터 설명자를 사용하면 모델 소비자가 메서드가 실행되기 전에 메서드에 값을 전달할 수 있습니다. 자세한 내용은 비즈니스 데이터 연결 모델 디자인을 참조하십시오.

한 가지 일반적인 시나리오는 SharePoint의 사용자가 일부 조건과 일치하는 외부 콘텐츠 형식의 인스턴스를 검색하려는 경우입니다. 필터 설명자를 Finder 메서드에 추가하여 이 시나리오를 지원할 수 있습니다.

필터 설명자를 Finder 메서드에 추가하려면

  1. BDC 메서드 세부 정보 창에서 Finder 메서드의 노드를 확장하고 매개 변수 노드를 확장한 다음 입력 매개 변수를 추가합니다. 자세한 내용은 방법: 메서드에 매개 변수 추가를 참조하십시오.

  2. 메서드 세부 정보 창에서 매개 변수의 형식 설명자를 선택합니다.

  3. 보기 메뉴에서 속성 창을 클릭합니다.

  4. 속성 창에서 형식 이름 속성을 필터에 적합한 데이터 형식으로 설정합니다.

    예를 들어, 필터에서 주문 날짜를 사용하여 메서드에서 반환하는 판매 주문의 수를 제한할 수 있습니다. 이 필터를 지원하려면 형식 설명자의 형식 이름 속성을 System.DateTime으로 설정해야 합니다.

  5. 메서드 세부 정보 창에서 FilterDescriptor 노드를 확장합니다.

  6. FilterDescriptor 추가 드롭다운 목록에서 FilterDescriptor 만들기를 클릭합니다.

    새로운 필터 설명자가 FilterDescriptor 노드 아래에 표시됩니다.

  7. 보기 메뉴에서 속성 창을 클릭합니다.

  8. 속성 창에서 형식 속성을 선택합니다.

  9. 형식 속성에 대해 표시되는 드롭다운 목록에서 원하는 필터링 패턴을 선택합니다. 각 필터링 패턴에 대한 자세한 내용은 Types of Filters Supported by BDC를 참조하십시오.

    예를 들어, 주문 날짜를 사용하여 Finder 메서드에서 반환하는 판매 주문의 수를 제한하는 필터를 만들려면 비교를 선택합니다. 비교 필터는 Finder 메서드에서 반환하는 인스턴스를 특정 조건이 충족되는 인스턴스로 제한합니다.

  10. 속성 창에서 연결된 TypeDescriptor 속성을 선택합니다.

  11. 연결된 TypeDescriptor 속성에 대해 표시되는 드롭다운 목록에서 이 절차의 앞부분에서 만든 형식 설명자를 선택합니다. 이렇게 하면 필터가 Finder 메서드의 입력 매개 변수와 관련됩니다.

  12. 데이터를 반환하는 Finder 메서드에 코드를 추가합니다. 입력 매개 변수를 선택 쿼리에서 조건으로 사용할 수 있습니다.

    다음 예제에서는 지정된 주문 날짜가 있는 판매 주문을 반환합니다.

    참고

    ServerName 필드의 값을 서버 이름으로 바꿉니다.

    Public Shared Function ReadList(ByVal OrderDateParam As DateTime) As IEnumerable(Of SalesOrderHeader)
        Const ServerName As String = "MySQLServerName"
        Dim dataContext As AdventureWorksDataContext = _
            New AdventureWorksDataContext("Data Source=" & ServerName & _
                ";Initial Catalog=AdventureWorks;Integrated Security=True")
    
        Dim NoValuePassedIn As DateTime = Convert.ToDateTime("1/1/1900 12:00:00 AM")
        Dim DefaultDateTime As DateTime = Convert.ToDateTime("2001-09-01 00:00:00.000")
    
        ' If the user does not provide a value for the filter.
        If OrderDateParam = NoValuePassedIn Then
            ' Use a default date time value.
            OrderDateParam = DefaultDateTime
        End If
    
        Dim SalesOrderHeader As IEnumerable(Of SalesOrderHeader) = _
            From SalesOrderHeaders In dataContext.SalesOrderHeaders _
            Where SalesOrderHeaders.OrderDate = OrderDateParam _
            Select SalesOrderHeaders
        Return SalesOrderHeader
    End Function
    
    public static IEnumerable<SalesOrderHeader> ReadList(DateTime OrderDateParam)
    {
        const string ServerName = "MySQLServerName";
        AdventureWorksDataContext dataContext = new AdventureWorksDataContext
              ("Data Source=" + ServerName + ";" +
               "Initial Catalog=AdventureWorks;Integrated Security=True");
    
        DateTime NoValuePassedIn = Convert.ToDateTime("1/1/1900 12:00:00 AM");
        DateTime DefaultDateTime = Convert.ToDateTime("2001-09-01 00:00:00.000");
    
        // If the user does not provide a value for the filter.
        if (OrderDateParam == NoValuePassedIn)
        {
            // Use a default date time value.
            OrderDateParam = DefaultDateTime;
        }
    
        IEnumerable<SalesOrderHeader> SalesOrderHeader =
            from salesOrderHeaders in dataContext.SalesOrderHeaders
            where salesOrderHeaders.OrderDate == OrderDateParam
            select salesOrderHeaders;
        return SalesOrderHeader;
    }
    

참고 항목

작업

방법: Finder 메서드 추가

방법: SpecificFinder 메서드 추가

방법: 메서드에 매개 변수 추가

방법: 매개 변수의 형식 설명자 정의

기타 리소스

비즈니스 데이터 연결 모델 디자인

SharePoint에 비즈니스 데이터 통합