如何:向 Finder 方法中添加筛选器描述符

利用筛选器描述符,模型的使用者可以在方法执行之前将值传递到方法。 有关更多信息,请参见设计业务数据连接模型

一种常见方案是:SharePoint 中的用户希望检索与某个条件匹配的外部内容类型的实例。 可通过向 Finder 方法中添加筛选器描述符来支持此方案。

向 Finder 方法中添加筛选器描述符

  1. 在**“BDC 方法详细信息”窗口中,展开 Finder 方法的节点,展开“参数”**节点,然后添加输入参数。 有关更多信息,请参见如何:向方法添加参数

  2. 在**“方法详细信息”**窗口中,选择参数的类型描述符。

  3. 在**“视图”菜单上,单击“属性窗口”**。

  4. 在**“属性”窗口中,将“类型名称”**属性设置为适合于筛选器的数据类型。

    例如,筛选器可能使用订单日期来限制方法返回的销售订单数。 若要支持该筛选器,类型描述符的**“类型名称”**属性必须设置为 System.DateTime。

  5. 在**“方法详细信息”窗口中,展开“筛选器描述符”**节点。

  6. 在**“添加筛选器描述符”下拉列表中,单击“创建筛选器描述符”**。

    **“筛选器描述符”**节点下将出现一个新的筛选器描述符。

  7. 在**“视图”菜单上,单击“属性窗口”**。

  8. 在**“属性”窗口中,选择“类型”**属性。

  9. 在为**“类型”**属性显示的下拉列表中,选择所需的筛选模式。 有关每种筛选模式的更多信息,请参见 Types of Filters Supported by the BDC(BDC 支持的筛选器的类型)。

    例如,若要创建使用订单日期来限制 Finder 方法中返回的销售订单数的筛选器,请选择**“Comparison”**。 Comparison 筛选器将 Finder 方法返回的实例限制为满足特定条件的那些实例。

  10. 在**“属性”窗口中,选择“关联的类型描述符”**属性。

  11. 在为**“关联的类型描述符”**属性显示的下拉列表中,选择您之前在此过程中创建的类型描述符。 这样会将筛选器与 Finder 方法的输入参数相关。

  12. 向 Finder 方法中添加返回数据的代码。 您可以使用输入参数作为 Select 查询中的条件。

    下面的示例返回具有指定订单日期的销售订单。

    提示

    用您的服务器名称替换 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 方法

如何:添加特定的 Finder 方法

如何:向方法添加参数

如何:定义参数的类型描述符

其他资源

设计业务数据连接模型

将业务数据集成到 SharePoint 中