SharePoint 2013 で OData と ECT を使用する

原文の記事の投稿日: 2012 年 12 月 7 日 (金曜日)

SharePoint 2013 BCS の便利な機能強化の 1 つに、SharePoint の BDC アプリケーションで OData を使用できるようになったことが挙げられます。ただし、最近、このプロセスの実行時に突き当たったギャップがいくつかあるため、他のユーザーが同じように行き詰まったときのために、ここでそのギャップについて説明することを思い立ちました。まず、OData 用のアプリケーションの基本的な作成方法について説明している https://msdn.microsoft.com/ja-jp/library/sharepoint/jj163967.aspx のドキュメントから読むことをお勧めします。ここで重要なのは、SharePoint Designer で OData ソースに接続する BDC アプリケーションを作成できないということです。そのためには、Visual Studio などのツールを使用して外部コンテンツ タイプ (ECT) を作成する必要があります。

上記のリンク先のドキュメントでは、ECT を作成するプロセスについて説明しています。この ECT を SharePoint アプリで使用する方法を示しており、そのようにしてそのアプリを展開しますが、これを BDC カタログに追加して多数のサイト コレクションで使用できるようにする場合の手順は示していません。そこでこの投稿が役立ちます。まず、上記の記事で説明されているプロセスを実行すると、エンティティ (テーブルなど) ごとに 1 つの ECT が作成されるということを知っておいてください。この点が重要なのは、ECT ファイルでは共有名が使用されるため、複数を BDC カタログにアップロードすることはできないからです。SharePoint でこれらの各エンティティを使用するには、次の手順を実行する必要があります。

  1. Visual Studio で ECT ファイルを右クリックし、[プログラムから開く...] をクリックして、[XML (テキスト) エディター] を選択します。ドキュメントの一番上の Model 要素に、Name 属性があります。この値が BDC にアップロードするすべての ECT で一意である必要があるため、各値をそのエンティティの内容を示す値 ("Customers Table" など) に変更する必要があります。
  2. 必要に応じて、ドキュメントの約 20 行下にある Entity 要素の名前空間を変更できます。私はモデル名と一致するように変更しましたが、これは単なるスタイルの好みで、必須ではありません。
  3. 変更を加えてファイルを保存したら、.ect ファイルを BDC に直接アップロードできます。既定のオプション (モデル) をそのまま使用し、[OK] をクリックすると完了です。
  4. モデルをインポートしたら、そのモデルを使用するための権限をユーザーに忘れずに付与します。これを忘れると意味がなくなってしまいます。

最後にもう 1 つ注意する点があります。それは、既定では SQL データベースや Azure のテーブル記憶領域などを通じて OData メタデータ エンドポイントが取得されないということです。幸い、SQL の場合にはその追加は比較的簡単です。まとめると、次の手順になります。

  1. 新しい空の ASP.NET Web アプリケーションを作成します。
  2. ADO.NET エンティティ データ モデルを追加します。
  3. WCF データ サービスを追加します。
  4. WCF データ サービスのクラス コンストラクターで型を設定する必要があります。この手順は、最初は少しわかりにくいかもしれません。実行する手順は、myDataConnection.Context.tt のような名前のファイル (App_Code フォルダーにあります) を探すことです。それを展開すると、その下に myDataConnection.Context.cs クラスがあります。そのクラスを開くと、WCF データ サービスに必要な 2 つの情報が表示されます。1 つ目は、WCF データ サービスのクラス コンストラクターの型として使用するクラス名です。2 つ目は、サービスでサポートされるエンティティの名前で、get; set; プロパティのように実装されます。少なくとも、公開するエンティティごとに "SetEntitySetAccessRules" を作成する必要があるため、WCF データ サービスではエンティティ名も必要です。詳細については、WCF データ サービスを追加する際のコメントを参照してください。ここでは単に、いずれかのルールを作成するときに使用するエンティティ名がどこで見つかるかについて説明しているだけです。

 

これはローカライズされたブログ投稿です。原文の記事は、「Using OData and ECTs in SharePoint 2013」をご覧ください。