チュートリアル: ビジネス データを使用した SharePoint での外部リストの作成
ビジネス データ接続 (BDC) サービスを使用すると、バックエンド サーバー アプリケーション、Web サービス、およびデータベースのビジネス データを SharePoint で表示できます。
このチュートリアルでは、サンプル データベースに含まれる連絡先に関する情報を返すという、BDC サービスのモデルを作成する方法について説明します。 次に、このモデルを使用して SharePoint に外部リストを作成します。
このチュートリアルでは、次の作業について説明します。
プロジェクトを作成する。
モデルにエンティティを追加する。
Finder メソッドを追加する。
SpecificFinder メソッドを追加する。
プロジェクトをテストする。
必須コンポーネント
このチュートリアルを実行するには、次のコンポーネントが必要です。
サポート対象エディションの Microsoft Windows および SharePoint。 詳細については、「SharePoint ソリューションの開発要件」を参照してください。
Visual Studio 2010 Professional または Visual Studio アプリケーション ライフサイクル管理 (ALM) のエディション
AdventureWorks サンプル データベースへのアクセス権。 AdventureWorks データベースのインストール方法の詳細については、「SQL Server Sample Databases (SQL Server サンプル データベース)」を参照してください。
Visual C++ プロジェクト
まず、BDC モデルを含むプロジェクトを作成します。
プロジェクトを作成するには
Visual Studio 2010 を起動します。
[新しいプロジェクト] ダイアログ ボックスを開き、使用する言語の [SharePoint] ノードを展開して、[2010] をクリックします。
[テンプレート] ペインの [ビジネス データ接続モデル] を選択します。 プロジェクトに「AdventureWorksContacts」という名前を付け、[OK] をクリックします。
SharePoint カスタマイズ ウィザードが表示されます。 このウィザードを使用すると、プロジェクトのデバッグに使用するサイトや、ソリューションの信頼レベルを選択できます。
[完了] をクリックして、既定のローカル SharePoint サイトと既定のソリューションの信頼レベルを受け入れます。
プロジェクトへのデータ アクセス クラスの追加
プロジェクトにデータ アクセス クラスを追加するには
[ツール] メニューの [データベースへの接続] をクリックします。
[接続の追加] ダイアログ ボックスが表示されます。
SQL Server AdventureWorks サンプル データベースとの接続を追加します。 詳細については、「接続の追加/変更 (Microsoft SQL Server)」を参照してください。
ソリューション エクスプローラーで、プロジェクト ノードをクリックします。
[プロジェクト] メニューの [新しい項目の追加] をクリックします。
[インストールされたテンプレート] ペインで、[データ] ノードを選択します。
[テンプレート] ペインの [LINQ to SQL クラス] をクリックします。
[名前] ボックスに「AdventureWorks」と入力し、[追加] をクリックします。
プロジェクトに .dbml ファイルが追加され、オブジェクト リレーショナル デザイナー (O/R デザイナー) が開きます。
[表示] メニューの [サーバー エクスプローラー] をクリックします。
サーバー エクスプローラーで、AdventureWorks サンプル データベースを示すノードを展開し、[テーブル] ノードを展開します。
[Contact (Person)] テーブルを O/R デザイナーにドラッグします。
エンティティ クラスが作成され、デザイン サーフェイスに表示されます。 このエンティティ クラスには、Contact (Person) テーブルの列にマップされるプロパティが含まれています。
BDC モデルからの既定のエンティティの削除
[ビジネス データ接続モデル] プロジェクトでは、Entity1 という名前の既定のエンティティがモデルに追加されます。 このエンティティを削除します。 後で、新しいエンティティを追加します。 空のモデルから始めることで、チュートリアルの完了までに必要な手順数を減らすことができます。
BDC モデルからの既定のエンティティを削除するには
ソリューション エクスプローラーで、[BdcModel1] ノードを展開し、BdcModel1.bdcm ファイルをダブルクリックします。
BDC デザイナーにビジネス データ接続モデル ファイルが開きます。
デザイナーで [Entity1] を右クリックし、[削除] をクリックします。
ソリューション エクスプローラーで Entity1.vb (Visual Basic の場合) または Entity1.cs (C# の場合) を右クリックし、[削除] をクリックします。
Entity1Service.vb (Visual Basic の場合) または Entity1Service.cs (C# の場合) を右クリックし、[削除] をクリックします。
モデルへのエンティティの追加
モデルにエンティティを追加します。 Visual Studio ツールボックスのエンティティを BDC デザイナーにドラッグできます。
モデルにエンティティを追加するには
[表示] メニューの [ツールボックス] をクリックします。
ツールボックスの [BusinessDataConnectivity] タブから、[エンティティ] を BDC デザイナーにドラッグします。
新しいエンティティがデザイナーに表示されます。 EntityService.vb (Visual Basic の場合) または EntityService.cs (C# の場合) というプロジェクトにファイルが追加されます。
[表示] メニューの [プロパティ ウィンドウ] をクリックします。
プロパティ ウィンドウで、連絡先の [名前] を設定します。
デザイナーのエンティティを右クリックし、[追加] をクリックし、[識別子] をクリックします。
新しい識別子がエンティティに表示されます。
プロパティ ウィンドウで、ContactID の識別子の名前を変更します。
[型の名前] ドロップダウン リストの [System.Int32] をクリックします。
SpecificFinder メソッドの追加
BDC サービスで特定の連絡先を表示できるようにするには、SpecificFinder メソッドを追加する必要があります。 一覧の項目を選択し、[リボン] の [アイテムの表示] ボタンをクリックすると、BDC サービスによって SpecificFinder メソッドが呼び出されます。
[BDC メソッドの詳細] ウィンドウを使用して、SpecificFinder メソッドを Contact エンティティに追加します。 特定のエンティティを返すには、メソッドにコードを追加します。
SpecificFinder メソッドを追加するには
BDC デザイナーで、[Contact] エンティティを選択します。
[表示] メニューの [その他のウィンドウ] をクリックし、[BDC メソッドの詳細] をクリックします。
[BDC メソッドの詳細] ウィンドウの [メソッドの追加] ドロップダウン リストから [SpecificFinder メソッドの作成] を選択します。
次の要素がモデルに追加されます。 これらの要素は [BDC メソッドの詳細] ウィンドウに表示されます。
ReadItem というメソッド。
メソッドの入力パラメーター。
メソッドの戻り値パラメーター。
各パラメーターの型記述子。
メソッドのメソッド インスタンス。
[BDC メソッドの詳細] ウィンドウで、[Contact] 型記述子用に表示されるドロップダウン リストをクリックし、[編集] をクリックします。
BDC エクスプローラーが開きます。 BDC エクスプローラーには、モデルを階層表示する機能があります。
[プロパティ] ウィンドウで、[TypeName] プロパティの横に表示されるドロップダウン リストをクリックし、[現在のプロジェクト] タブをクリックして、[Contact] を選択します。
BDC エクスプローラーで、[Contact] を右クリックし、[型記述子の追加] をクリックします。
TypeDescriptor1 という新しい型記述子が BDC エクスプローラーに表示されます。
プロパティ ウィンドウで、[名前] プロパティを「ContactID」に設定します。
[TypeName] プロパティの横のドロップダウン リストをクリックし、[Int32] を選択します。
[Identifier] プロパティの横のドロップダウン リストをクリックし、[ContactID] を選択します。
手順 6. を繰り返して、次の各フィールドについて型記述子を作成します。
名前
型名
FirstName
System.String
LastName
System.String
Phone
System.String
EmailAddress
System.String
EmailPromotion
System.Int32
NameStyle
System.Boolean
PasswordHash
System.String
PasswordSalt
System.String
BDC デザイナーの [Contact] エンティティで、Readitem メソッドをダブルクリックします。
コード エディターで、Contact のサービス コード ファイルが開きます。
ContactService クラスで、ReadItem メソッドを次のコードに置き換えます。 このコードは次のタスクを実行します。
AdventureWorks データベースの Contacts テーブルのレコードを取得します。
Contact エンティティを BDC サービスに返します。
注意
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; }
Finder メソッドの追加
BDC サービスで連絡先を一覧表示できるようにするには、Finder メソッドを追加する必要があります。 [BDC メソッドの詳細] ウィンドウを使用して、Finder メソッドを Contact エンティティに追加します。 エンティティのコレクションを BDC サービスに返すには、メソッドにコードを追加します。
Finder メソッドを追加するには
BDC デザイナーで、[Contact] エンティティを選択します。
[BDC メソッドの詳細] ウィンドウで、[ReadList] ノードを折りたたみます。
ReadList メソッドの下に表示される [メソッドの追加] のドロップダウン リストの [Finder メソッドの作成] をクリックします。
メソッド、戻り値パラメーター、および型記述子が追加されます。
BDC デザイナーの [Contact] エンティティで、ReadList メソッドをダブルクリックします。
コード エディターで、Contact のサービス コード ファイルが開きます。
ContactService クラスで、ReadList メソッドを次のコードに置き換えます。 このコードは次のタスクを実行します。
AdventureWorks データベースの Contacts テーブルのデータを取得します。
Contact エンティティの一覧を BDC サービスに返します。
注意
ServerName フィールドの値を、使用するサーバーの名前に置き換えます。
Public Shared Function ReadList() As IEnumerable(Of Contact) Const ServerName As String = "MySQLServerName" Dim dataContext As AdventureWorksDataContext = _ New AdventureWorksDataContext("Data Source=" & ServerName & _ ";Initial Catalog=AdventureWorks;Integrated Security=True") Dim Contacts As IEnumerable(Of Contact) = _ From TempContacts In dataContext.Contacts.Take(20) _ Select TempContacts Return Contacts End Function
public static IEnumerable<Contact> ReadList() { const string ServerName = "MySQLServerName"; AdventureWorksDataContext dataContext = new AdventureWorksDataContext ("Data Source=" + ServerName + ";" + "Initial Catalog=AdventureWorks;Integrated Security=True"); IEnumerable<Contact> Contacts = from contacts in dataContext.Contacts.Take(20) select contacts; return Contacts; }
プロジェクトのテスト
プロジェクトを実行すると、SharePoint サイトが開き、Visual Studio ではモデルがビジネス データ接続サービスに追加されます。 SharePoint に Contact エンティティを参照する外部リストを作成します。 AdventureWorks データベースに含まれる連絡先のデータが一覧表示されます。
注意
場合によっては、ソリューションをデバッグする前に SharePoint のセキュリティ設定を変更する必要があります。 詳細については、「Business Data Connectivity モデルのデザイン」を参照してください。
プロジェクトをテストするには
F5 キーを押します。
SharePoint サイトが開きます。
[サイトの操作] メニューの [その他のオプション] をクリックします。
[作成] ページの [外部リスト] をクリックし、[作成] をクリックします。
カスタム リストに Contacts と名前を付けます。
[外部コンテンツ タイプ] フィールドの横にある [参照] ボタンをクリックします。
[外部コンテンツ タイプ ピッカー] ダイアログ ボックスの [AdventureWorksContacts.BdcModel1.Contact] をクリックし、[作成] をクリックします。
[作成] をクリックして連絡先一覧を作成します。
外部リストが作成されます。 AdventureWorks サンプル データベースの連絡先が外部リストに表示されます。
SpecificFinder メソッドをテストするには、リスト内の連絡先をクリックします。
リボンの [アイテム] タブをクリックします。
[アイテム] タブで、[アイテムの表示] をクリックします。
選択した連絡先の詳細情報がフォームに表示されます。
次の手順
SharePoint で BDC サービスのモデルを設計する方法の詳細については、次のトピックを参照してください。