Uncategorized

[SharePoint 2010 開発] ADO.NET Data Services を使用した SharePoint 2010 へのアクセス

環境 :
SharePoint Foundation 2010 (Beta 2)
Visual Studio 2010 (Beta 2)
ADO.NET Data Services v1.5 (CTP2)

<<SharePoint 2010 開発 新機能>>

こんにちは。

SharePoint Conference 2009 (Japan) では、お時間の関係で、あえて REST については簡単な紹介に留め、ADO.NET Data Services を使用したデータアクセスのデモは省略させて頂きました。(この他にも、Excel Services で発行されたグラフなどのオブジェクト単位にも Uri が存在しますので、REST を使うと最新のグラフイメージをページ上に自由に添付できます。)

前回も記載しましたが、現 Beta では、別途 ADO.NET Data Services v1.5 CTP 2 をインストールする必要があります。このため、現在の Beta 版では ADO.NET Data Services でアクセスをおこなう場合にも些細な注意点がありますので、以下に記載します。ごちゃごちゃ背景を説明するよりも手順を見てもらえばすぐにわかると思いますので、雑な記載ですみませんが、早速 Windows フォームアプリケーションを作って SharePoint Server 2010 に接続してみましょう。

  1. Visual Studio 2010 で、[Windows フォームアプリケーション] のプロジェクトを新規作成します。(ターゲットの .NET Framework のバージョンは、今回、.NET Framework 3.5 にしておきます。)
  2. 表示されたフォーム (Form1) に、ツールボックスから [DataGridView] をドラッグアンドドロップしてみましょう。
  3. ソリューションエクスプローラで、プロジェクトを選択して右クリックし、[サービス参照の追加 . . .] を選択します。
  4. 表示される [サービス参照の追加] のダイアログボックスに、デモでお見せした SharePoint の REST サービス (.svc) のアドレス (例:http://localhost/sites/officedemo/_vti_bin/ListData.svc) を入力して確定します ([OK] ボタンを押します)。
  5. 今日説明したかったのは、ここだけ!です。
    SharePoint 2010 では、ADO.NET Data Services の v 1.5 を使用しています。このため、サービス参照の追加をおこなうと、System.Data.Services.Client.dll の参照が自動的に追加されていると思いますが、この参照を削除し、ADO.NET Data Services 1.5 の以下のライブラリを参照追加してください。サービス参照を追加・更新をおこなうと、毎回上記の dll が参照追加されるので、申し訳ありませんが、サービス参照の追加・更新のたびに毎回削除をしておいてください。(本件は、Beta 版の環境ということで、ご容赦ください。)%programfiles(x86)%\ADO.NET Data Services V1.5 CTP2\bin\Microsoft.Data.Services.Client.dll

    なお、対象フレームワークを [.NET Framework 4] にしている場合には、この作業は不要 です (既に、ADO.NET Data Services v 1.5 が含まれているためです)。

  6. セッションでも注意点としてご説明しましたが、REST で参照するリスト、列などは表示名が使用されるため、日本語を使われている私達日本のユーザーにとっては日本語名のオブジェクトやプロパティになってしまう点はあらかじめご留意ください。
    Form1.cs のコードを開いて、以下の通り取り込まれたデータコンテキストのインスタンスを作成します。(日本語で違和感があるかもしれませんがご容赦を。。。)

    public partial class Form1 : Form{ServiceReference1.OfficeデモサイトDataContext dc =new ServiceReference1.OfficeデモサイトDataContext(new Uri(@"http://localhost/sites/officedemo/_vti_bin/ListData.svc"));public Form1(){. . . . . 
  7. デザイナー上で Form1 をダブルクリックして、Form1 表示時の Load イベントの処理を以下の通り記述します。今回は、Employees リストに接続をしています。(ここも、日本語名のリスト、列では日本語が混ざることになります。。。)
    using System.Net;. . . . .private void Form1_Load(object sender, EventArgs e){dc.Credentials = CredentialCache.DefaultCredentials;var res = (from p in dc.Employees   orderby p.Fullname   select p).ToList();dataGridView1.DataSource = res;}

あとは、ビルドして、実行をおこないます。

Categories: Uncategorized

Tagged as: ,

12 replies»

  1. 本文と関係しない話ですみませんが
    以下URLで紹介されているリンク先に
    誤りがあるようです。
    可能であれば修正いただけると助かります。
    http://msdn.microsoft.com/ja-jp/events/dd334470.aspx
    ”WCF サービスの作成”のWeb キャストの
    リンク先が次の”WCF サービスのホスティング”と
    同じファイルになっています。
    ご検討のほどよろしくお願いいたします。

    Like

  2. 松崎です。確かに、誤った Web キャストにリンクされています。ご指摘、ありがとうございます。
    本件、是非 修正対応したいと思います。(Live までに少々お時間がかかるかもしれません。お手数おかけしますが、よろしくお願いいたします。)

    Like

Leave a reply to tsmatsuz Cancel reply