[SharePoint 2010 開発] LINQ を使ったデータアクセス


環境 :
Windows 7 (x64)
SharePoint Server 2010 Beta 2
Visual Studio 2010 Beta 2

<<SharePoint 2010 開発 新機能>>

こんにちは。

本日の Microsoft Develper Forum 2009 で紹介したデモのコード (の一部) を掲載しておきます。

今回お見せしたデモは、SharePoint Conference (in Las Vegas) のセッション "The Overview of the SharePoint 2010 Developer Platform" (スピーカー : Paul Andrew) のうちの一部を抜粋してご紹介しました。SharePoint 2010 は、開発関連も、魅力いっぱいの機能がたくさんありますので、ご興味がある方は、SharePoint 2010 のサイト や、Paul Andrew のブログ なども是非参照してみてください。
本日デモでお見せした他のコード (Data Services を使用したアクセス、など) をはじめ、その他のさまざまな開発トピック (まだまだ山ほどあります) については、11 月末に開催される日本でのイベント「Sharepoint Conference 2009 Japan」など、是非ご期待ください。

SharePoint 2010 を使用した LINQ を使ったデータアクセス

本日のデモの手順は、以下の通りです。SharePoint Server 2010 Beta 2 はまもなく公開されますので、是非、Visual Studio 2010 Beta 2 と共に、その進化した開発の世界を実感してください。

  1. Visual Studio 2010 を起動し、プロジェクトの新規作成で、[Visual C#] - [SharePoint] - [2010] から、[Visual Web Part] を選択します。 



    従来、SharePoint の Web パーツの開発は、ボタンなどのコントロールを配置なども含めコードを使用して作成するのが一般的でしたが、この [Visual Web Part] のプロジェクトでは、.ascx を使用してビジュアルな開発をおこなうことができます。.ascx ファイルも、SharePoint サーバー上の適切なフォルダ (mapped folder) に配置されます。

  2. 今回、この Web パーツでは、下図のように GridView と Button の各コントロールを配置してみましょう。ボタンを押した際に、データを検索して GridView 上に表示します。



  3. プロジェクトで [Add reference ...] (参照の追加) メニューを選択し、以下の Linq 用のライブラリ (.dll) を追加します。

    %programfiles%common filesmicrosoft sharedweb server extensions14isapimicrosoft.sharepoint.linq.dll

  4. Linq to SQL の sqlmetal コマンドと同様に、特定の SharePoint サイトに接続する専用のデータコンテキスト (DataContext) のコードを生成します。SharePoint 2010 Management Shell (SharePoint 用の PowerShell コマンド環境) を起動し、以下の通り、spmetal コマンドを実行します。(実は、今回から SharePoint の管理に PowerShell もバリバリ使えます。ここでは説明を省略します。)

    spmetal /web:http://localhost /namespace:Projects /code:Projects.cs


    今回は、http://localhost のSharePoint サイトを使用し、「Projects」の名前空間のクラスとして、Projects.cs の C# のコードファイルを生成しています。(このサイトで使用されているリスト、列などの情報がデータコンテキストとして抽出されます。)

      

  5. 上記で生成されたコード (Projects.cs) をプロジェクトに既存のアイテムとして追加します。

  6. ボタンクリック時のイベント処理として、今回、以下のようなコードを記述してみましょう。ここでは、SharePoint サイトの Employees リストから必要なデータを抽出して、GridView にバインドしています。(今回、GridView に何の設定もおこなっていませんので、GridView の列の自動生成がおこなわれます。)

    . . .
    using Projects;
    using System.Linq;
    using System.Text;

    protected void Button1_Click(object sender, EventArgs e)
    {
        ProjectsDataContext dc = new ProjectsDataContext("http://localhost/");
        IQueryable q = from c in dc.Employees
                       where c.Project.DueDate < DateTime.Now.AddMonths(6)
                       select new
                       {
                           Name = c.Title,
                           Job = c.JobTitle,
                           Team = c.Team
                       };
        GridView1.DataSource = q;
        GridView1.DataBind();    
    }

以上で完了です。このプロジェクトを SharePoint に配置してみましょう。
SharePoint の UI 上でこの作成した Web パーツを配置すると、下図のようにデータを検索して GridView にデータが表示されるのが確認できます。

ここでご紹介した手法は、前述したように SharePoint 2010 における進化のほんの一例です。(デモでは REST などもご紹介しました。)
今回ご紹介したデータアクセスまわりや、進化したワークフロー、バックエンドビジネスデータとの連携 (Business Connectivity Services = BCS) などを中心に、SharePoint 2010 を使用した開発では、これまでの難解な開発と異なり、一般のデータストアを扱う感覚で開発をおこなうことができます。(無論、まずは、"コードを書かずに" そのまま機能を理解し、その進化を実感して頂くことをお勧めします。エンドユーザーレベルで、かなりの範囲のソリューション構築が可能です。)
これまで 「SharePoint の開発は敷居が高い」、「むずかしい」 と思っていた方も、2010 からの SharePoint ではこのように一般的な手法を使用して簡単にソリューションを構築できるという点をまずは実感してください。(続きは、SharePoint Conference 2009 Japan で。。。)

 

Comments (0)

Skip to main content