ピースペース

Entity Framework & RIA Servicesで悩む

leave a comment »

Silverlight@AzureでRIA Servicesが好感触
で、UIがSilverlightで、データストアにSQL Serverな開発でもRIA Serviceを使ってみたいと
で、この場合、データアクセスにはEntity Frameworkを使うことになる

課題は、売上一覧表というDataGridに商品名を表示すること
これ、あたりまえというか、ごく普通の仕様
これまでの開発でここが問題になることはまずない
そう、単純に売上テーブルに商品テーブルをLeft Outer Joinするだけ
そうゆうSQLクエリーをEFが実行してくれれば良い
そのためにはEDMをどう定義するか??
と考えて… はまる;;

MSDNのEntity Frameworkの解説にはサンプルもたくさん用意されている
ところが、商品名@売上一覧のサンプルが見当たらない…Why??

EDMの狙いは、売上一覧での「商品名」を売上.商品.商品名でアクセスできるようにすること
売上一覧Gridで、売上日には売上.売上日、商品名には売上.商品.商品名をBindすることになる
そのBindをどう指定するか?はおいといて

売上.商品.商品名を実現するには、
EDM上で、売上Entityと商品Entityにアソシエーション設定が必要
RDBにリレーションが定義してあれば、アソシエーションも自動で作ってくれる
RDBにリレーション定義がなかった場合、アソシエーションを手動で定義することになる
ここで問題が起こる
EDMビジュアルデザイナでアソシエーションを追加して
Silverlightをリビルドすると
Unable to retrieve AssociationType for association
が、発生する(T.T)
edmxをXMLエディタで開いてSSDLスキーマ側に追加の定義が必要らしい
このあたりの、仕組みや理由が?? 作業も面倒
なんとかがんばってアソシエーションを定義してみるも
今度は、売上query.include(“商品”)が機能しない感じ
確かに、このクエリーがDomainContextのEntitySetにどうデータを格納するのか?
がいまいちはっきりイメージできない
あるいは、ただスキーマ定義にどこか間違いがあるのか??それはどこなのか??
混乱してくる

面倒になったので
売上 Left outer join 商品なViewを作成し
そのViewをもとにEDMを生成する
これですんなり 商品名@売上一覧 は表示される
めでたし!

ん?これで良いのか?? EDMって
これがうまくいくのでこれをパターンにすると
EDMを見誤るような気がする
売上Entityの商品名プロパティはEDMの思想にはないはず
というか、アソシエーションを定義すると
今度はその項目が二つのEntityでコンフリクトすると怒られるはず;;
ううむ。そのうちまた検証するべし>売上.商品.商品名

Written by nasu38yen

2010年2月7日 @ 10:37 PM

カテゴリー: 未分類

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。