HOW TO:將篩選描述元加入至搜尋方法
篩選描述元可讓模型的消費者在方法執行前將值傳入方法。 如需詳細資訊,請參閱設計商務資料連接模型。
一種常見的情節就是 SharePoint 中的使用者想要擷取符合某些準則之外部內容類型的執行個體。 您可以將篩選描述元加入至搜尋工具方法,以便支援此情節。
若要將篩選描述元加入至搜尋工具方法
在 [BDC 方法詳細資料] 視窗中,依次展開搜尋工具方法的節點和 [參數] 節點,然後加入輸入參數。 如需詳細資訊,請參閱 HOW TO:將參數加入至方法。
在 [方法詳細資料] 視窗中,選取參數的型別描述元。
在 [檢視] 功能表中,按一下 [屬性視窗]。
在 [屬性] 視窗中,將 [型別名稱] 屬性設定為適用於該篩選的資料型別。
例如,篩選條件可能會使用訂單日期來限制方法所傳回的銷售訂單數目。 若要支援該篩選,必須將型別描述元的 [型別名稱] 屬性設定為 System.DateTime。
在 [方法詳細資料] 視窗中,展開 [篩選描述元] 節點。
在 [加入篩選描述元] 下拉式清單中,按一下 [建立篩選描述元]。
新的篩選描述元隨即出現在 [篩選描述元] 節點的下方。
在 [檢視] 功能表中,按一下 [屬性視窗]。
在 [屬性] 視窗中,選取 [型別] 屬性。
在出現的 [型別] 屬性下拉式清單中,選取您想要的篩選模式。 如需每種篩選模式的詳細資訊,請參閱 BDC 所支援的篩選類型 (英文)。
例如,若要建立一種篩選,以使用訂單日期來限制搜尋工具方法中傳回的銷售訂單數目,請選取 [比較]。 [比較] 篩選會將搜尋工具方法傳回的執行個體限制為符合特定條件的那些執行個體。
在 [屬性] 視窗中選取 [關聯的型別描述元] 屬性。
在出現的 [關聯的型別描述元] 屬性的下拉式清單中,選取您之前在這個程序中所建立的型別描述元。 如此便會將篩選條件與搜尋工具方法的輸入參數相關聯。
將程式碼加入至傳回資料的搜尋工具方法。 您可以將輸入參數用做 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; }