SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Visual Studio 2010によるSharePoint 2010開発の基本

Business Connectivity Services(BCS)を使用したSQL Azureとの連携

Visual Studio 2010によるSharePoint 2010開発の基本(5)

  • X ポスト
  • このエントリーをはてなブックマークに追加

段階3:更新処理の追加

 次に、外部リストからSQL Azure上のItemsテーブルに書き戻しができるようにしてみます。そのためには、外部コンテンツタイプのモデルに更新メソッドを追加し、更新処理を実装します。

[9]モデルに更新メソッドを追加する

 デザイナー上に表示されている[ItemEntity]モデルの[メソッド]を右クリックし、[新しいメソッドの追加]をクリックします(図21)。メソッド名を[UpdateItem]とします。

図21 新しいメソッドの追加
図21 新しいメソッドの追加

 次に[BDCメソッドの詳細]ウィンドウで、[メソッド]-[UpdateItem]-[インスタンス]-[メソッドインスタンスの追加]をクリックし、一覧から[Finderインスタンスの作成]をクリックしてメソッドを追加します。プロパティウィンドウで[名前]を[UpdateItem]に、[型]を[Finder]から[Updater]に変更します(図22)。これにより、更新処理のためのメソッドであることを指定できます。型には、[Creator]や[Deleter]など、アイテム作成や削除処理のための型も定義されています。

図22 UpdateItemメソッドインスタンスの追加
図22 UpdateItemメソッドインスタンスの追加

[10]UpdateItemメソッドのパラメーターを追加する

 [BDCメソッドの詳細]ウィンドウで、[メソッド]-[UpdateItem]-[パラメーター]-[パラメーターの追加]をクリックし、一覧から[パラメーターの作成]をクリックします。プロパティウィンドウで、パラメーターの[名前]を[id]に変更します。[BDCメソッドの詳細ウィンドウ]で、追加したパラメーターの[型記述子]の[idTypeDescriptor]をクリックします。プロパティウィンドウで、型記述子の[名前]を[ItemID]、型の名前を[System.String]から[Int32]に変更します。さらに、[識別子]に[ItemID]を設定します。そして、BDCエクスプローラー上で、[UpdateItem]メソッドの[id]パラメーター内の[ItemID]をクリックし、プロパティウィンドウで[Pre-Updaterフィールド]を[True]に設定します。

 次に、UpdateItemメソッドのパラメーターをもう一つ追加します。更新のためのUpdateItemメソッドには、更新後のエンティティをパラメーターとして渡してあげる必要があるためです。

 先ほどの[id]パラメーターと同様に、パラメーターを追加し名前を[itemEntity]に変更します。[BDCメソッドの詳細ウィンドウ]で、型記述子[itemEntityTypeDescriptor]をクリックし、プロパティウィンドウで、[名前]を[Entity1]、[型]を[Sytem.String]から[BdcModelProjectSample.BdcModel1.ItemEntity, BdcModel1]に変更します。そして、BDCエクスプローラー上で、[UpdateItem]メソッドの[itemEntity]パラメーター内の[Entity1]に対して、次のように型記述子を4つ追加します。

 1番目として、名前を[ItemID]、型の名前を[Int32]、識別子を[ItemID]、Updaterフィールドを[True]に設定します。2番目として、名前を[ItemName]、型の名前を[System.String]のまま、Updaterフィールドを[True]に設定します。3番目として、名前を[Price]、型の名前を[Int32]、Updaterフィールドを[True]に設定します。最後の4番目として、名前を[Description]、型の名前を[System.String]のまま、Updaterフィールドを[True]に設定します。

 最終的に、UpdateItemメソッドに追加したパラメーターは、図23のようになります。

図23 UpdateItemメソッドのパラメーター
図23 UpdateItemメソッドのパラメーター

[11]UpdateItemメソッドを実装する

 デザイナー上で、[ItemEntity]モデルの[UpdateItem]メソッドを右クリックし、[コードの表示]をクリックします。すると、生成されたUpdateItemメソッドが表示されます。このメソッドに、リスト5のようにコードを追加します。

リスト5 UpdateItemメソッドの変更(ItemEntityService.cs)
public static void UpdateItem(int id, ItemEntity itemEntity)
{
    using (var db = new DataClasses1DataContext(connectionString))
    {
        // (4)Itemデータの取得
        var item = db.Items.Single(i => i.ItemID == itemEntity.ItemID);

        // (5)Itemデータの更新
        item.ItemName = itemEntity.ItemName;
        item.Price = itemEntity.Price;
        item.Description = itemEntity.Description;
        db.SubmitChanges();
    };
}

 (4)では、SQL Azure上のItemsテーブルから該当するデータを取得しています。

 (5)では、パラメーターとして受け取った更新用ItemEntityの内容に基づいて、SQL Azure上のItemsテーブルのデータを更新しています。

 以上で、サンプルは完成です。

最終的なサンプルの実行

 それでは、SharePointの外部リストでSQL Azureのデータを更新できるかどうかを確認してみましょう。

 作成した外部コンテンツタイプを配置し、SharePointサイトを起動します。そして、先ほど作成した外部リストを表示します。

 リストから特定のアイテムを右クリックし、[アイテムの編集]をクリックします。表示された[アイテムの編集]ウィンドウで、データ内容を変更し、[保存]アイコンをクリックします(図24)。

図24 [アイテムの編集]ウィンドウ
図24 [アイテムの編集]ウィンドウ

 すると、外部リストのデータが更新されたことが確認できます(図25)。

図25 外部リストのデータ更新
図25 外部リストのデータ更新

まとめ

 今回は、Visual Studio 2010を使用して外部コンテンツタイプを作成し、SharePoint 2010と外部データを連携する方法を解説しました。そして、SharePoint 2010とSQL Azureを連携するサンプルを実際に作成しました。

 次回は、SharePointとSilverlightとの連携について解説する予定です。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Visual Studio 2010によるSharePoint 2010開発の基本連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 広瀬 嘉久(株式会社ジェイテックジャパン)(ヒロセ ヨシヒサ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/6038 2011/07/20 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング