Business Connectivity Services(BCS)を使用したSQL Azureとの連携
Visual Studio 2010によるSharePoint 2010開発の基本(5)
ダウンロード サンプルファイル (51.4 KB)
段階3:更新処理の追加
次に、外部リストからSQL Azure上のItemsテーブルに書き戻しができるようにしてみます。そのためには、外部コンテンツタイプのモデルに更新メソッドを追加し、更新処理を実装します。
[9]モデルに更新メソッドを追加する
デザイナー上に表示されている[ItemEntity]モデルの[メソッド]を右クリックし、[新しいメソッドの追加]をクリックします(図21)。メソッド名を[UpdateItem]とします。
次に[BDCメソッドの詳細]ウィンドウで、[メソッド]-[UpdateItem]-[インスタンス]-[メソッドインスタンスの追加]をクリックし、一覧から[Finderインスタンスの作成]をクリックしてメソッドを追加します。プロパティウィンドウで[名前]を[UpdateItem]に、[型]を[Finder]から[Updater]に変更します(図22)。これにより、更新処理のためのメソッドであることを指定できます。型には、[Creator]や[Deleter]など、アイテム作成や削除処理のための型も定義されています。
[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のようになります。
[11]UpdateItemメソッドを実装する
デザイナー上で、[ItemEntity]モデルの[UpdateItem]メソッドを右クリックし、[コードの表示]をクリックします。すると、生成されたUpdateItemメソッドが表示されます。このメソッドに、リスト5のようにコードを追加します。
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)。
すると、外部リストのデータが更新されたことが確認できます(図25)。
まとめ
今回は、Visual Studio 2010を使用して外部コンテンツタイプを作成し、SharePoint 2010と外部データを連携する方法を解説しました。そして、SharePoint 2010とSQL Azureを連携するサンプルを実際に作成しました。
次回は、SharePointとSilverlightとの連携について解説する予定です。
この記事は参考になりましたか?
既に会員の方はを行ってください。
- Visual Studio 2010によるSharePoint 2010開発の基本連載記事一覧
-
- サンドボックスソリューション開発とSharePoint Onlineへの展開
- SharePoint 2010とSilverlightの連携
- Business Connectivity Services(BCS)を使用したSQL A...
- この記事の著者
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、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本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
WINGSプロジェクト 広瀬 嘉久(株式会社ジェイテックジャパン)(ヒロセ ヨシヒサ)
<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書、記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア


![図24 [アイテムの編集]ウィンドウ](http://cz-cdn.shoeisha.jp/static/images/article/6038/6038_23_s.gif)
