フィルター記述子を使用すると、モデルのコンシューマーが、メソッドを実行する前にメソッドに値を渡せるようになります。詳細については、「Business Data Connectivity モデルのデザイン」を参照してください。
たとえば、SharePoint のユーザーが、特定の条件に一致する外部コンテンツ タイプのインスタンスを取得できるようにするには、Finder メソッドにフィルター記述子を追加します。
Finder メソッドにフィルター記述子を追加するには
[BDC メソッドの詳細] ウィンドウで、Finder メソッドのノードを展開し、[パラメーター] ノードを展開して、入力パラメーターを追加します。詳細については、「方法 : メソッドにパラメーターを追加する」を参照してください。
メソッドの詳細ウィンドウ、パラメーターの型記述子を選択します。
メニュー バーを選択表示、 のプロパティ ウィンドウ。
[プロパティ] ウィンドウで、[型の名前] プロパティを、フィルターに対応するデータ型に設定します。
たとえば、メソッドから返される販売注文の数を注文日で制限するフィルターをサポートするには、型記述子の [型の名前] プロパティを「System.DateTime」に設定する必要があります。
[メソッドの詳細] ウィンドウで、[フィルター記述子] ノードを展開します。
追加フィルター記述子 選択一覧で、 フィルター記述子の作成。
[フィルター記述子] ノードの下に新しいフィルター記述子が表示されます。
メニュー バーを選択表示、 のプロパティ ウィンドウ。
のプロパティ ウィンドウ、選択、 型プロパティ。
表示されたリストで、 型プロパティは、必要なフィルターのパターンを選択します。
たとえば、受注日を使用して、検索メソッドで返される注文の数を制限するフィルターを作成するには、選択比較。比較フィルターは、検索メソッドが、特定の条件に一致するインスタンスのみを返すことを確認します。各フィルター パターンの詳細については、「Types of Filters Supported by the BDC (BDC でサポートされているフィルターの種類)」を参照してください。
のプロパティ ウィンドウ、選択、 型記述子が関連付けられているプロパティ。
表示されたリストで、 型記述子が関連付けられているプロパティは、上記の手順で作成した型記述子を選択します。これにより、このフィルターが Finder メソッドの入力パラメーターに関連付けられます。
データを返す 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 Functionpublic 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; }