ビジネス データ接続 (BDC) サービスを使用すると、バックエンド サーバー アプリケーション、Web サービス、およびデータベースのビジネス データを SharePoint で表示できます。
このチュートリアルでは、サンプル データベースに含まれる連絡先に関する情報を返すという、BDC サービスのモデルを作成する方法について説明します。次に、このモデルを使用して SharePoint に外部リストを作成します。
このチュートリアルでは、次の作業について説明します。
プロジェクトを作成する。
モデルにエンティティを追加する。
Finder メソッドを追加する。
SpecificFinder メソッドを追加する。
プロジェクトをテストする。
必須コンポーネント
このチュートリアルを実行するには、次のコンポーネントが必要です。
サポート対象エディションの Windows と SharePoint詳細については、「SharePoint ソリューションの開発要件」を参照してください。
Visual Studio Professional、Visual Studio Ultimate、または Visual Studio Premium
AdventureWorks サンプル データベースへのアクセス権。AdventureWorks データベースのインストール方法の詳細については、「SQL Server Sample Databases (SQL Server サンプル データベース)」を参照してください。
BDC モデルを含むプロジェクトを作成します。
BDC モデルを含むプロジェクトを作成するには
Visual Studio のメニュー バーで、[ファイル]、[新規作成]、プロジェクトを選択します。
[新しいプロジェクト] ダイアログ ボックスが表示されます。
[Visual C#] か [Visual Basic] の下で、SharePoint ノードを展開し、[2010] の項目を選択します。
[テンプレート] のペインで、[SharePoint 2010 プロジェクト] を選択し、AdventureWorksTest プロジェクトの名前を入力し、を [OK] のボタンをクリックします。
SharePoint カスタマイズ ウィザードが表示されます。このウィザードでは、プロジェクトのデバッグ、ソリューションの信頼レベルを設定するために使用するサイトを指定できます。
信頼レベルを設定するには [ファーム ソリューションとして配置する] のオプション ボタンを選択します。
既定のローカル SharePoint サイトを受け入れるように [完了] のボタンをクリックします。
[ソリューション エクスプローラー] では、SharePoint プロジェクト ノードを選択します。
メニュー バーで、プロジェクト、[新しい項目の追加] を選択します。
[新しい項目の追加] ダイアログ ボックスが表示されます。
[テンプレート] のペインで、[ビジネス データ接続モデル (ファーム ソリューションのみ)] を選択し、プロジェクトに" AdventureWorksContacts "を付けておくと、[追加] のボタンをクリックします。
プロジェクトへのデータ アクセス クラスの追加
プロジェクトにデータ アクセス クラスを追加するには
メニュー バーで、[ツール]、[データベースへの接続] を選択します。
[接続の追加] ダイアログ ボックスが表示されます。
SQL Server AdventureWorks サンプル データベースとの接続を追加します。
詳細については、「接続の追加/変更 (Microsoft SQL Server)」を参照してください。
[ソリューション エクスプローラー] でプロジェクト ノードを選択します。
メニュー バーで、プロジェクト、[新しい項目の追加] を選択します。
[インストールされたテンプレート] のペインで、[データ] のノードを選択します。
[テンプレート] のペインで、[LINQ to SQL クラス] を選択します。
[名前] ボックスで、AdventureWorks を指定し、[追加] のボタンをクリックします。
.dbml ファイルがプロジェクトに追加され、オブジェクト リレーショナル デザイナー (O/R デザイナー) が表示されます。
メニュー バーで、[ビュー]、[サーバー エクスプローラー] を選択します。
サーバー エクスプローラーで、AdventureWorks サンプル データベースを示すノードを展開し、[テーブル] ノードを展開します。
O/R デザイナーに [Contact (Person)] のテーブルを追加します。
エンティティ クラスが作成され、デザイン サーフェイスに表示されます。このエンティティ クラスには、Contact (Person) テーブルの列にマップされるプロパティが含まれています。
BDC モデルからの既定のエンティティの削除
[ビジネス データ接続モデル] プロジェクトでは、Entity1 という名前の既定のエンティティがモデルに追加されます。このエンティティを削除します。後で、新しいエンティティを追加します。空のモデルから始めることで、チュートリアルの完了までに必要な手順数を減らすことができます。
BDC モデルからの既定のエンティティを削除するには
[ソリューション エクスプローラー] では、[BdcModel1] のノードを展開し、BdcModel1.bdcm ファイルを開きます。
BDC デザイナーにビジネス データ接続モデル ファイルが開きます。
デザイナーで、[Entity1] のショートカット メニューを開き、[削除] を選択します。
[ソリューション エクスプローラー] では、Entity1.vb (Visual Basic の場合) または Entity1.cs のショートカット メニュー (C#) で開き、[削除] を選択します。
Entity1Service.vb (Visual Basic の場合) または Entity1Service.cs のショートカット メニュー (C#) で開き、[削除] を選択します。
モデルへのエンティティの追加
モデルにエンティティを追加します。BDC デザイナーに Visual Studio [ツールボックス] からエンティティを追加できます。
モデルにエンティティを追加するには
メニュー バーで、[ビュー]、[ツールボックス] を選択します。
[ツールボックス] の [BusinessDataConnectivity] のタブで、BDC デザイナーに [エンティティ] を追加します。
新しいエンティティがデザイナーに表示されます。Visual Studio は EntityService.vb (Visual Basic の場合) またはプロジェクトに EntityService.cs (C#) という名前のファイルが追加されます。
メニュー バーで、[ビュー]、[プロパティ]、[ウィンドウ] を選択します。
[プロパティ] のペインで、連絡先に [名前] のプロパティ値を設定します。
デザイナーのエンティティのショートカット メニューを開き、[追加] を選択し、を [識別子] を選択します。
新しい識別子がエンティティに表示されます。
プロパティ ウィンドウで、ContactID の識別子の名前を変更します。
[型名] の一覧で、[System.Int32] を選択します。
SpecificFinder メソッドの追加
BDC サービスで特定の連絡先を表示できるようにするには、SpecificFinder メソッドを追加する必要があります。ユーザーがリストの項目を選択し、を選択すると、BDC サービスの呼び出しによって SpecificFinder メソッドのリボンのボタンを [アイテムの表示]。
[BDC メソッドの詳細] ウィンドウを使用して、SpecificFinder メソッドを Contact エンティティに追加します。特定のエンティティを返すには、メソッドにコードを追加します。
SpecificFinder メソッドを追加するには
BDC デザイナーで、[連絡先] のエンティティを選択します。
メニュー バーで、[ビュー]、[その他のウィンドウ]、[BDC メソッドの詳細] を選択します。
[BDC メソッドの詳細] ウィンドウが表示されます。
[メソッドの追加] の一覧で、[SpecificFinder メソッドの作成] を選択します。
次の要素がモデルに追加されます。これらの要素は [BDC メソッドの詳細] ウィンドウに表示されます。
ReadItem というメソッド。
メソッドの入力パラメーター。
メソッドの戻り値パラメーター。
各パラメーターの型記述子。
メソッドのメソッド インスタンス。
[BDC メソッドの詳細] のペインで、[連絡先] の型記述子用に表示される開き、を選択します。[編集] リストを返します。
[BDC エクスプローラー] は、モデルの階層を開き、示します。
[プロパティ] の一覧を [TypeName] のプロパティの横に開き、[現在のプロジェクト] のタブをクリックし、を [連絡先] のプロパティを選択します。
[BDC エクスプローラー] では、[連絡先] のショートカット メニューを開き、[型記述子の追加] を選択します。
[TypeDescriptor1] という新しい型記述子が [BDC エクスプローラー] に表示されます。
[プロパティ] のペインで、[ContactID]に [名前] のプロパティ値を設定します。
リストを [TypeName] のプロパティの横に開き、[Int32] を選択します。
リストを [識別子] のプロパティの横に開き、[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 デザイナーでは、[連絡先] のエンティティで、メソッドの [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 Functionpublic 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 デザイナーでは、[連絡先] のエンティティを選択します。
[BDC メソッドの詳細] のペインで、[ReadItem] のノードを折りたたみます。
[ReadList] のメソッドの下の [メソッドの追加] の一覧で、[Finder メソッドの作成] を選択します。
メソッド、戻り値パラメーター、および型記述子が追加されます。
BDC デザイナーでは、[連絡先] のエンティティで、メソッドの [ReadList] 開きます。
連絡先のサービスのコード ファイルがコード エディターで開きます。
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 Functionpublic 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] の項目を選択し、[作成] のボタンをクリックします。
SharePoint では、AdventureWorks サンプル データベースの連絡先を含む外部リストを作成します。
SpecificFinder メソッドをテストするには、リストの連絡先を選択します。
[項目] のリボンで、タブをクリックし、[アイテムの表示] のコマンドを選択します。
選択した連絡先の詳細情報がフォームに表示されます。
次の手順
SharePoint で BDC サービスのモデルを設計する方法の詳細については、次のトピックを参照してください。