方法: SpecificFinder メソッドを追加する
SpecificFinder メソッドを作成して、単一のエンティティ インスタンスを返すことができます。 ビジネス データの Web パーツまたは外部リストに含まれるエンティティを選択すると、ビジネス データ接続 (BDC) サービスで SpecificFinder メソッドが実行されます。 詳細については、「Business Data Connectivity モデルのデザイン」を参照してください。
SpecificFinder メソッドを作成するには
BDC デザイナーで、エンティティを選択します。 Visual Studio の BDC デザイナーにエンティティを追加する方法の 詳細については、「方法: モデルにエンティティを追加する」を参照してください。
[表示] メニューの [その他のウィンドウ] をクリックし、[BDC メソッドの詳細] をクリックします。
[BDC メソッドの詳細] ウィンドウが表示されます。 [BDC メソッドの詳細] ウィンドウの詳細については、「BDC モデルのデザイン ツールの概要」を参照してください。
[BDC メソッドの詳細] ウィンドウの [メソッドの追加] ドロップダウン リストから [SpecificFinder メソッドの作成] を選択します。
次の要素がモデルに追加されます。 これらの要素は [BDC メソッドの詳細] ウィンドウに表示されます。
メソッド。
メソッドの入力パラメーター。
メソッドの戻り値パラメーター。
各パラメーターの型記述子。
メソッドのメソッド インスタンス。
詳細については、「Business Data Connectivity モデルのデザイン」を参照してください。
Visual Studio のプロパティ ウィンドウを開きます。
戻り値パラメーターの型記述子をエンティティ型記述子として構成します。 エンティティ型記述子の作成方法の詳細については、「方法: パラメーターの型記述子を定義する」を参照してください。
注意
Finder メソッドをエンティティに追加した場合、この手順を実行する必要はありません。 Visual Studio では、Finder メソッドで定義した型記述子が使用されます。
注意
エンティティ型の識別子フィールドが自動的に生成されるデータベース テーブルのフィールドを表している場合は、識別子フィールドの [読み取り専用] プロパティを [True] に設定します。
[メソッドの詳細] ウィンドウで、メソッドのメソッド インスタンスを選択します。
既定では、このメソッドには "MethodInstance1" という名前が付けられます。
プロパティ ウィンドウで、"戻り値パラメーター名" プロパティをメソッドの戻り値パラメーターの名前に設定します。 メソッド インスタンス プロパティの詳細については、「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 Function
public 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; }