Compartilhar via


ADO.NET DataServices :データの取得

こんにちは、こだかです。

すみません、ずいぶんと時間がたってしまいましたが、前回ADO.NET DataServicesでServiceを作成した続きを書きたいと思います。
(2008/09/24 追記: 前回と今回で使用したサンプルプロジェクトとスクリプトは後日この記事に添付いたします。)
(2008/09/25 追記: サンプルプロジェクトとスクリプトはここからダウンロードしてください。)

まず、テーブルスキーマを書いておきますね。

CREATE TABLE [dbo].[jobs](
    [JobId] [int] NOT NULL,
    [JobName] [nvarchar](50) NULL,
CONSTRAINT [PK_job] PRIMARY KEY CLUSTERED
([JobId] ASC)

CREATE TABLE [dbo].[employee](
    [employeeId] [int] NOT NULL,
    [FirstName] [nchar](10) NULL,
    [LastName] [nchar](10) NULL,
    [JobId] [int] NULL,
    [Picture] [nvarchar](max) NULL,
    [Picture_Jpg] [image] NULL,
CONSTRAINT [PK_employee] PRIMARY KEY CLUSTERED
([employeeId] ASC)

以上の2つのテーブルをそのままEntityDataModelで公開しました。

image

こんなのでしたね。
さらに2つのテーブルはリレーションシップが張ってあり、これはEntityDataModelでは
アソシエーション(関係)となります。上記の絵では2つのエンティティの間に線があるのがわかると思います。

さて、このServiceをクエリーするわけですが、ごちゃごちゃ説明するよりも、例を示したほうがわかりやすいとおもいますので、ざっと書きます。
(ホストのアドレスは適当に読み替えてください)

データの取得1---------------------------------------------------

RootAccess:
https://localhost/Demo1/HRService.svc/

EntitySet:
https://localhost/Demo1/HRService.svc/jobs

SingleEntity:
https://localhost/Demo1/HRService.svc/jobs(10)

Link traversal:
https://localhost/Demo1/HRService.svc/jobs(10)/employee

Deep access1:
https://localhost/Demo1/HRService.svc/jobs(10)/employee(40)

Deep access2:
https://localhost/Demo1/HRService.svc/jobs(10)/employee(40)/LastName

Raw value access:
https://localhost/Demo1/HRService.svc/jobs(10)/employee(40)/LastName/$value

Raw value access2:
https://localhost/Demo1/HRService.svc/jobs(10)/employee(40)/Picture_Jpg/$value

データの取得2---------------------------------------------------
Sorting:
https://localhost/Demo1/HRService.svc/jobs?$orderby=JobName

Filterring:
https://localhost/Demo1/HRService.svc/jobs?$filter=(JobId)gt(20)

Paging:
https://localhost/Demo1/HRService.svc/jobs?$orderby=JobName&$top=2&$skip=1

Inline Expansion:
https://localhost/Demo1/HRService.svc/jobs?$expand=employee

たとえばFilterring(Where条件)の例では、以下のような結果が返ってきます。
JobIdが20より大きな値です。(gtというのは GreaterThanの略だと思われます。)

image

次回は別のフォーマットを考慮したクエリーを行ってみましょう。

 

こだかたろう

Comments