SpecificFinder メソッドを作成して、単一のエンティティ インスタンスを返すことができます。ビジネス データ接続の (BDC) サービスは、ユーザーがビジネス データ Web パーツまたは外部リストに含まれるエンティティを選択すると、SpecificFinder メソッドを実装します。詳細については、「Business Data Connectivity モデルのデザイン」を参照してください。
SpecificFinder メソッドを作成するには
BDC デザイナーのエンティティを選択します。
Visual Studio の BDC デザイナーにエンティティを追加する方法の詳細については、方法: モデルにエンティティを追加するを参照してください。
メニュー バーで、[表示]、[その他のウィンドウ]、**[BDC メソッドの詳細]**を選択します。
[BDC メソッドの詳細] ウィンドウが表示されます。そのウィンドウの詳細については、BDC モデルのデザイン ツールの概要を参照してください。
[メソッドの追加] の一覧で、**[SpecificFinder メソッドの作成]**を選択します。
次の要素がモデルに追加されます。これらの要素は [BDC メソッドの詳細] ウィンドウに表示されます。
メソッド。
メソッドの入力パラメーター。
メソッドの戻り値パラメーター。
各パラメーターの型記述子。
メソッドのメソッド インスタンス。
詳細については、「Business Data Connectivity モデルのデザイン」を参照してください。
Visual Studio のプロパティ ウィンドウを開きます。
戻り値パラメーターの型記述子をエンティティ型記述子として構成します。エンティティ型記述子の作成方法の詳細については、方法: パラメーターの型記述子を定義するを参照してください。
[!メモ]
Finder メソッドをエンティティに追加した場合、この手順を実行する必要はありません。Visual Studio では、Finder メソッドで定義した型記述子が使用されます。
[!メモ]
エンティティ型の識別子フィールドが自動的に生成されるデータベース テーブルのフィールドを表している場合は、trueに識別子フィールドの [読み取り専用] のプロパティを設定します。
[メソッドの詳細] のウィンドウで、メソッドのメソッド インスタンスを選択します。
プロパティ ウィンドウで、"戻り値パラメーター名" プロパティをメソッドの戻り値パラメーターの名前に設定します。メソッド インスタンス プロパティの詳細については、「MethodInstance」を参照してください。
**[ソリューション エクスプローラー]のエンティティに対して生成された開き、[コードの表示]**を選択します。サービス コード ファイルのショートカット メニューが。
コード エディターで、エンティティ サービス コード ファイルが開きます。エンティティ サービス コード ファイルの詳細については、「ビジネス データ接続モデルの作成」を参照してください。
SpecificFinder メソッドにコードを追加します。このコードは次のタスクを実行します。
データ ソースからレコードを取得します。
エンティティを BDC サービスに返します。
次の例では、SQL Server の AdventureWorks サンプル データベースの連絡先を返します。
[!メモ]
ServerName フィールドの値を、使用するサーバーの名前に置き換えます。
Public Shared Function ReadItem(ByVal contactID As Integer) As Contact Const ServerName As String = "MySQLServerName" Dim dataContext As AdventureWorksDataContext = _ New AdventureWorksDataContext("Data Source=" & ServerName & _ ";Initial Catalog=AdventureWorks;Integrated Security=True") Dim Contact As Contact = _ (From TempContacts In dataContext.Contacts.AsEnumerable().Take(20) _ Where TempContacts.ContactID = contactID _ Select TempContacts).[Single]() Return Contact End Functionpublic static Contact ReadItem(int contactID) { const string ServerName = "MySQLServerName"; AdventureWorksDataContext dataContext = new AdventureWorksDataContext ("Data Source=" + ServerName + ";" + "Initial Catalog=AdventureWorks;Integrated Security=True"); Contact Contact = (from contacts in dataContext.Contacts.AsEnumerable().Take(20) where contacts.ContactID == contactID select contacts).Single(); return Contact; }