[7]LINQ to SQLクラスを追加する
SQL Azureへのアクセスを容易にするために、LINQ to SQLクラスを追加します。
通常のLINQ to SQLクラスの追加と同じなので、細かな手順は省かせていただきます。SQL Azureに接続する際の注意点として、[接続の追加]ダイアログボックスで、[サーバー名]にはSQL Azureのサーバーを入力し、SQL Server認証を使用してSQL Azureのユーザー名とパスワードを入力してください。データベースには、事前に作成しておいた[SampleDB]を指定します(図18)。
[8]ItemEntityService.csのコードを修正する
モデルのメソッド定義とマッピングされているItemEntityService.csを、リスト4のように修正します。
public class ItemEntityService { // (1)接続文字列の設定【変更が必要】 private const string connectionString = "Server=tcp:<サーバー名>.database.windows.net,1433;Database=SampleDB;User ID=<ユーザー名>@<サーバー名>;Password=<パスワード>;Trusted_Connection=False;Encrypt=True;"; public static ItemEntity ReadItem(int id) { using (var db = new DataClasses1DataContext(connectionString)) { // (2)取得したItemデータからItemEntityを作成 var entity = (from i in db.Items where i.ItemID == id select new ItemEntity { ItemID = i.ItemID, ItemName = i.ItemName, Price = i.Price, Description = i.Description }).Single(); return entity; }; } public static IEnumerable<ItemEntity> ReadList() { using (var db = new DataClasses1DataContext(connectionString)) { List<ItemEntity> entityList = new List<ItemEntity>(); // (3)ItemEntityリストにデータを追加 var items = from i in db.Items select i; foreach (var i in items) { entityList.Add(new ItemEntity { ItemID = i.ItemID, ItemName = i.ItemName, Price = i.Price, Description = i.Description }); } return entityList; }; } }
(1)では、SQL Azureの接続文字列を設定しています。接続文字列は、Windows Azure開発者ポータル上で表示できますので、コピーして使用できます。
(2)では、LINQを使用してSQL Azure上のItemsテーブルから1件のデータを取得し、ItemEntityクラスを作成しています。
(3)では、LINQを使用してSQL Azure上のItemsテーブルから全件データを取得し、作成したItemEntityのリストに追加しています。
段階2までのサンプル実行
それでは、SharePoint上でSQL Azureのデータを表示できるかどうかを確認してみましょう。
作成した外部コンテンツタイプを配置し、SharePointサイトを起動します。外部コンテンツタイプのモデルのエンティティ名をEntity1からItemEntityに変更しましたので、外部リストを改めて作成し直す必要があります。新たに作成する外部リストの[外部コンテンツタイプの種類]には、[BdcModelProjectSample.BdcModel1.ItemEntity(BdcModel1)]を指定します。
作成した外部リストを表示すると、SQL Azure上のItemsテーブルに登録しておいたデータの一覧が正しく表示されていることが分かります(図19)。
さらに、データの個別表示も行えます(図20)。
実装したReadListメソッドやReadItemメソッドが正しく動作していることが確認できましたので、SharePointサイトを終了します。