ラベル Data Services の投稿を表示しています。 すべての投稿を表示
ラベル Data Services の投稿を表示しています。 すべての投稿を表示

2009年9月15日火曜日

DataSvcUtil.exeがerror 7001を吐くとき (Windows7のみ)

 

ちょいはまったので備忘録。



Windows7でADO.NET DataService v1.5 CTP1/2を使用時、DataSvcUtilを手動で叩こうとすると、上のようなエラー7001が出てうまく動いてくれないことがあります。

これ、ADO.NET DataServiceのインストール時にSystem.Data.Service.Design.dllが正しく読めてないときに起こるようで、そういえばインストール時にエラーが出ていたような気が。

で、下のサイトにある解決策のとおり、dllのセキュリティ設定を変更して再度インストーラ起動>Repairとすることで解決しました。

解決策

ネタ元スレ


DataServiceUtilはv1.5以降のバインディングやINotifyPropertyChanged実装を利用するときは必要になります。Windows7固有の現象みたいなので、該当する場合は気をつけてください。

2009年6月10日水曜日

.NET RIA Servicesのロードマップ

http://silverlight.net/forums/t/101160.aspx

 

MSフォーラムに投稿されてたのでメモ。

気にしていたADO.NET DataServicesのサポートはPDC2009 beta バージョンから、ということは今年の暮れでしょうか。

でも July 2009 CTP でもいろいろな機能強化や、Data Services とのインテグレーションを見越したライブラリ整備が行われるとのことでこちらを楽しみに。

RTWはまだもう少し先(来年初頭でVS2010& .NET4.0準拠)のようですが。

2009年5月14日木曜日

EF4.0に向けて

ADO.NET Team blogが続々と更新されてるので要チェック。

Entity Framework(EF)4.0では、よりPOCOなエンティティモデル(=余計なインターフェースや親クラスをもたない、よりPlain Old なObject)や、モデルファースト(作ったモデルをもとにDBスキーマを生成)なんかが可能になるとのこと。それじゃEntityの代わりに変更追跡を担当するのは誰?みたいな話もこれからでてくるようです。

N-Tierでの利用などのアーキテクチャ見地のことについてもすこし言及があります。このへんになるとSilverlightではとくに.NET RIA Servicesとのカラミもあると思います。いまのところ.NET RIA ServicesはEFまたはLINQtoSQLをもとに独自のサービス/プロキシをつくりますが、5月のMSDNマガジンのRIA Servicesの記事にもいずれは両者が連携するとの記述があります。

(Building A Data-Driven Expense App with Silverlight3より一部引用)

In future releases, .NET RIA Services will also work with ADO.NET Data Services.

なのでADO.NET DataServicesをベースとしてその上にRIA Servicesの機能性を展開するようなアーキテクチャガイドラインになるといいですね。Silverlight3が多くの開発者を取り込んでブレイクするためにはこのような「速成フレームワーク」の存在は欠かせない部分だと思います。

2009年4月15日水曜日

ADO.NET DataServices v1.5 CTPの行カウント機能を実験

 

ダウンロードしたけど試せていなかったv1.5CTP1のrow count機能を触ってみました。

 

以前のバージョンではそもそもCountが未実装だったので、たとえば「キー値を渡した存在チェック」みたいな一般的な処理を行う際にも回りくどいことをする必要がありました。

んで今回のこの機能追加ですが、2種類の方法で行数取得が可能となっています。 (詳しくはここ)

 

  1. Count オプション(pseudo selector)
  2. InlineCount オプション(query option)

 

まず最初のCountですが、これは完全に結果セットの行数を単純にスカラー値として返すクエリ。

 

たとえば、以下のように返してくれます。

 

  • MyService.svc/Products/$count

→ 20

  • MyService.svc/Products/$count/?$filter=CategoryId eq 3

→ 6

 

対してInlineCountはというと、クエリ結果のフォーマット内に結果行数の情報を格納して返す形となります。

 

例としては、

  • MyService.svc/Products?$filter=CategoryId eq 2&$inlinecount=allpages

 

などと投げると、レスポンスの中に

<m2:count xmlns:m2="4</m2:count">4http://schemas.microsoft.com/ado/2008/11/dataservices/metadata">4</m2:count>

といった感じで m2:count タグが挿入されるのがわかります。

でも、クライアントからコードで取得するときは、

var query =
     from p in ctx.Products
     where p.CategoryId == categoryId
     select p;
int cnt = query.Count();


と単純に書いても動いたので、明示的にInlineCountの指定をしなくてもとりあえず大丈夫なのかもしれません。



(以前はquery.Count()の部分でNotSupportExceptionだったと思います)。



ただし、



var query =
     from p in ctx.Products
     where p.Id == id	//Id は主キー
     select p;
int cnt = query.Count();  // NotSupportedException!!


のように、主キーで問い合わせを行うパターンではCountでNotSupportedExceptionが出てました。




  • MyService.svc/Products(7)



のような問い合わせ形式には現状対応していないみたいんでしょうか。



 



とりあえずは以下のように逃げられますがね。まあこれはあくまでワークアラウンドということで。



DataServiceQuery<Product> query =
     (from p in ctx.Products
      where p.Id == id
      select p) as DataServiceQuery<Product>;
var ps = query.Execute();
int cnt = ps.Count();


と、ここまで書き連ねておいてなんですが、これによるとv1.5の DataServiceContext.IgnoreResourceNotFoundException プロパティを使えば、いちいちRowCountなんぞとらなくても、FirstOrDefaultで存在チェックできそうですね。。。



もっと早く気づけば良かったw 疲れたんでこの検証はまた後日。

2009年3月6日金曜日

Pro ADO.NET Data Services

今週は北陸金沢まで片道4時間の出張がありました。

こんなときこそ、買いだめしておいた本をちゃんと読めるというものです。

今回は、

Pro ADO.NET Data Services   ~ Working with RESTful Data

 

いまのところADO.NET Data ServicesについてはMSDN以外にほとんど日本語リソースがないので、すごく読みたかったんですよね。実際届いてからたびたびリファレンス的につまみ読みしていたんですが、今回はちゃんと頭から。といっても洋書読みはちょっと気を抜くと内容が頭に残らないので、内容を噛みしめながら3章まで。ここまで読めばひととおり基本が押さえられますね。

私は技術者とはいっても、一般的なプロジェクト開発の現場からは離れてもうすぐ1年になるので、いま現場でどのようにADO.NET Data Servicesが評価されているのかはすごく興味があるんです。予想としてはLINQtoSQLやEFが少しずつ使われ始めたのかな?というイメージなんですが。以前私が絡んだプロジェクト(.NET)では小規模ではこなれたTyped DataSetをシンプルに使ったり、大規模だと手作りのPONO(いまはPOCOとよぶのが主流かな?)ベースフレームワークを構築したりと十人並みに苦労していた気がします。仕事を離れたところではRailsのActiveRecordやdb4oをいじってみたりしてたりね。このADO.NET Data Servicesもとくに低予算の小規模プロジェクトなんかでRails使うイメージでサクッと使えるデータ基盤になれば良いなと思うのですが。とくにSilverlightとの相性の良さ(以前問題も挙げたけど)で今後使われるケースが増えると思うし。今後個人的にはData層の第一候補としていろいろ試してみようと思います。

4章以降はレガシーシステムからの移行や、AJAX・Silverlightからの利用についての言及になってるのでこのへんはさらっと読んでおこうかなと。