次の方法で共有


SpecificFinder メソッドを追加する

Specific Finder メソッドを作成することによって、1 つのエンティティ インスタンスを返すことができます。 ビジネス データ接続 (BDC) サービスでは、ユーザーがビジネス データ Web パーツまたは外部リスト内のエンティティを選択したときに Specific Finder メソッドを実行します。 詳細については、「ビジネス データ接続モデルを設計する」を参照してください。

Specific Finder メソッドを作成するには

  1. BDC デザイナーで、エンティティを選択します。

    Visual Studio の BDC デザイナーにエンティティを追加する方法については、「方法: モデルにエンティティを追加する」を参照してください。

  2. メニュー バーで、[表示]>[その他のウィンドウ][BDC メソッドの詳細] の順に選択します。

    [BDC メソッドの詳細] ウィンドウが開きます。 そのウィンドウの詳細については、「BDC モデルのデザイン ツールの概要」を参照してください。

  3. [メソッドの追加] 一覧で、[Specific Finder メソッドの作成] を選択します。

    Visual Studio により、次の要素がモデルに追加されます。 これらの要素は、[BDC メソッドの詳細] ウィンドウに表示されます。

    • メソッド。

    • メソッドの入力パラメーター。

    • メソッドの戻り値パラメーター。

    • 各パラメーターの型記述子。

    • メソッドのメソッド インスタンス。

      詳細については、「ビジネス データ接続モデルを設計する」を参照してください。

  4. Visual Studio の [プロパティ] ウィンドウを開きます。

  5. 戻り値パラメーターの型記述子をエンティティ型記述子として構成します。 エンティティ型記述子を作成する方法については、「方法: パラメーターの型記述子を定義する」を参照してください。

    Note

    このエンティティに Finder メソッドを追加している場合、この手順を実行する必要はありません。 Visual Studio では、その Finder メソッドで定義されている型記述子を使用します。

    Note

    エンティティ型の識別子フィールドが、自動的に生成されたデータベース テーブル内のフィールドを表している場合は、その識別子フィールドの Read-only プロパティを True に設定します。

  6. [メソッドの詳細] ウィンドウで、そのメソッドのメソッド インスタンスを選択します。

  7. [プロパティ ウィンドウ] で、[戻り値パラメーター名] プロパティをそのメソッドの戻り値パラメーターの名前に設定します。 メソッド インスタンスのプロパティの詳細については、MethodInstance に関するページを参照してください。

  8. ソリューション エクスプローラーで、エンティティに対して生成されたサービス コード ファイルのショートカット メニューを開き、[コードの表示] を選択します。

    エンティティ サービス コード ファイルがコード エディターで開きます。 エンティティ サービス コード ファイルの詳細については、「ビジネス データ接続モデルを作成する」を参照してください。

  9. Specific Finder メソッドにコードを追加します。 このコードは、以下のタスクを実行します。

    • データ ソースからレコードを取得します。

    • BDC サービスにエンティティを返します。

      次の例では、SQL Server 用の AdventureWorks サンプル データベースから連絡先を返します。

      Note

      ServerName フィールドの値をサーバーの名前に置き換えてください。

      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;
      }