LINQ to ADO.NET Data Servicesを利用する為にクラスを作成

メモ投稿。ADO.NET Data Servicesをクライアントサイドで利用する時の中間クラス作成方法。

C#で生成したい場合
C:\Windows\system32>DataSvcUtil.exe /out:C:\生成するクラス名.cs /uri:http://localhost:XXX/ADO.NET Data Services名.svc/
VBで生成したい場合
C:\Windows\system32>DataSvcUtil.exe language:VB /out:C:\生成するクラス名.vb /uri:http://localhost:XXX/ADO.NET Data Services名.svc/

SOAP形式で言う所のプロキシクラスのようなクラスが生成される。型のメンバとサービスへのアクセスを容易にする関連付けが含まれる。


後は簡単。LINQをかけるデータの先をこのクラスの該当メンバに設定するだけ。
試しに、PubsデータベースのPublisherテーブルのみを対象に生成したクラスを転載。ただし、長くなるので久々に続きを読むを利用。気になる方は見て見てください(とは言っても本当に転載だけ)。見て見ると、クラスを手書きするよりはこれを利用しようかなぁという気になるかも。

//------------------------------------------------------------------------------
// <auto-generated>
//     このコードはツールによって生成されました。
//     ランタイム バージョン:2.0.50727.3053
//
//     このファイルへの変更は、以下の状況下で不正な動作の原因になったり、
//     コードが再生成されるときに損失したりします。
// </auto-generated>
//------------------------------------------------------------------------------

// 元のファイル名: PubsAstoria.cs
// 生成日: 2008/11/18 13:22:26
namespace pubsModel
{
    
    /// <summary>
    /// スキーマの pubsEntities にはコメントがありません。
    /// </summary>
    public partial class pubsEntities : global::System.Data.Services.Client.DataServiceContext
    {
        /// <summary>
        /// 新しい pubsEntities オブジェクトを初期化します。
        /// </summary>
        public pubsEntities(global::System.Uri serviceRoot) : 
                base(serviceRoot)
        {
            this.OnContextCreated();
        }
        partial void OnContextCreated();
        /// <summary>
        /// スキーマの publishers にはコメントがありません。
        /// </summary>
        public global::System.Data.Services.Client.DataServiceQuery<publishers> publishers
        {
            get
            {
                if ((this._publishers == null))
                {
                    this._publishers = base.CreateQuery<publishers>("publishers");
                }
                return this._publishers;
            }
        }
        private global::System.Data.Services.Client.DataServiceQuery<publishers> _publishers;
        /// <summary>
        /// スキーマの publishers にはコメントがありません。
        /// </summary>
        public void AddTopublishers(publishers publishers)
        {
            base.AddObject("publishers", publishers);
        }
    }
    /// <summary>
    /// スキーマの pubsModel.publishers にはコメントがありません。
    /// </summary>
    /// <KeyProperties>
    /// pub_id
    /// </KeyProperties>
    [global::System.Data.Services.Common.DataServiceKeyAttribute("pub_id")]
    public partial class publishers
    {
        /// <summary>
        /// 新しい publishers オブジェクトを作成します。
        /// </summary>
        /// <param name="pub_id">pub_id の初期値。</param>
        public static publishers Createpublishers(string pub_id)
        {
            publishers publishers = new publishers();
            publishers.pub_id = pub_id;
            return publishers;
        }
        /// <summary>
        /// スキーマのプロパティ city にはコメントがありません。
        /// </summary>
        public string city
        {
            get
            {
                return this._city;
            }
            set
            {
                this.OncityChanging(value);
                this._city = value;
                this.OncityChanged();
            }
        }
        private string _city;
        partial void OncityChanging(string value);
        partial void OncityChanged();
        /// <summary>
        /// スキーマのプロパティ country にはコメントがありません。
        /// </summary>
        public string country
        {
            get
            {
                return this._country;
            }
            set
            {
                this.OncountryChanging(value);
                this._country = value;
                this.OncountryChanged();
            }
        }
        private string _country;
        partial void OncountryChanging(string value);
        partial void OncountryChanged();
        /// <summary>
        /// スキーマのプロパティ pub_id にはコメントがありません。
        /// </summary>
        public string pub_id
        {
            get
            {
                return this._pub_id;
            }
            set
            {
                this.Onpub_idChanging(value);
                this._pub_id = value;
                this.Onpub_idChanged();
            }
        }
        private string _pub_id;
        partial void Onpub_idChanging(string value);
        partial void Onpub_idChanged();
        /// <summary>
        /// スキーマのプロパティ pub_name にはコメントがありません。
        /// </summary>
        public string pub_name
        {
            get
            {
                return this._pub_name;
            }
            set
            {
                this.Onpub_nameChanging(value);
                this._pub_name = value;
                this.Onpub_nameChanged();
            }
        }
        private string _pub_name;
        partial void Onpub_nameChanging(string value);
        partial void Onpub_nameChanged();
        /// <summary>
        /// スキーマのプロパティ state にはコメントがありません。
        /// </summary>
        public string state
        {
            get
            {
                return this._state;
            }
            set
            {
                this.OnstateChanging(value);
                this._state = value;
                this.OnstateChanged();
            }
        }
        private string _state;
        partial void OnstateChanging(string value);
        partial void OnstateChanged();
    }
}