« VAIO type P with WinXP | トップページ | NUnit の "Hello, world!" ~ C# 2008 Express + NUnit 2.5 で、 テストファーストの Step by Step »

2009年5月26日 (火)

ADO.NET EntityFramework ver.4

.NET Framework 3.5 SP1 と一緒に出てきた EntityFramework v1 だけど、 先月までの開発プロジェクトでは使う機会は無くて、 失業中w に遊びたいな~、 と思ってるうちにもう 5月も終盤。
VS10beta が出てきたので、 まるっきり v1 を触れないでいるうちに、 v4 を追っかけないといけない状況に… (汗;

あ、 バージョン 4 って言ってますけど、 .NET Framework ver.4 に合わせてるだけらしいです。 略称は EF4 だそうで …電気機関車かい!? (w
# え!? そんな車両はない? f(^^;;;

さて、 「こだかたろうです」 より。

New EntityFramework
Posted: Monday, May 25, 2009 4:22 PM

Persistence-Ignorant Objects
いわゆる PI シナリオのサポートですね。 永続化層に対して特定インタフェイスや特定プロダクトの実装をエンティティにいれこまないことが可能です。 システムの汎用化を促進します。 で、 当然 POCO を使用します。

このへんかな。 ⇒ MSDN ライブラリ - Persistence-Ignorant Objects ( 今日現在、 まだ日本語訳はありません )
「EntityFramework の永続化の仕掛けのことを知らない (Persistence-Ignorant) 」 POCO ( "plain-old" CLR objects ) なクラスでも、 EntityFramework を使えば DB と結び付けられるようなる ( …でいいのかな f(^^;  )

※ POCO って、 Plain-Old C Object ( C の struct との互換性を意識したクラス ) ってのがあったよなぁ。 まぎらわし~

Model-First Support
これも正常進化系、 概念モデルより、 データベースのモデルを作成する形が可能になります。
スクリプトが発行可能なんですね。 使用するかは置いておいて。

雲のごとく - Visual Studio 2010 beta 1 登場 を読むと、 テーブル生成用の SQL を吐いてくれる、 という程度らしいです。
ドメインモデルと既存のテーブルを摺り合わせてくれるようになってくれれば、 使えるんだけどねぇ。

LINQ to SQL は、 どうしてもビジネスロジックの中で SQL Server のことを気にしないといけなかったので、 しょせんは繋ぎ。 本命は EntityFramework だと思ってはいるんですが、 楽勝で使えるようになるには、 もうしばらく掛かりそうです。

|

« VAIO type P with WinXP | トップページ | NUnit の "Hello, world!" ~ C# 2008 Express + NUnit 2.5 で、 テストファーストの Step by Step »

プログラミング」カテゴリの記事

コメント

概念としてはよくわかるんですが、いざ使おうとなると私もよくわかっていません。特にセキュリティ系。例えばSQL Serverに接続する際にはWindows認証などがかけられますが、EFに関しては私が調べたところ見つかりませんでした。ASP.NETのように誰でもアクセスできるようにするのが基本なのかな? でもネット上に誰でもアクセスできるように口を開いているのはどうにも気持ち悪い。何か制限かけれるのかな・・・
例えばSilverlightを企業内で使用する場合、Silverlightはクライアントで動くので、認証されたユーザーだけEFに接続できるようにしたいのです。

投稿: trapemiya | 2009年5月27日 (水) 09時52分

や、 わたしもまだぜんぜん触ってないので、 さっぱり分かってませんが… f(^^;

EF1 で EntityConnection を作って…
http://msdn.microsoft.com/ja-jp/library/bb738533.aspx
…から、 オブジェクトコンテキストを作るにせよ、 EF4 で ObjectContext を作ってから引っ張り出す…
http://msdn.microsoft.com/ja-jp/library/dd468074(VS.100).aspx
…にせよ、 サンプルコードを見る限り、 DB への接続文字を渡してますから、 SQL 認証でも Windows 認証でも効かせられると思うんだけど。 そういう話ではない? f(^^;


> Silverlightはクライアントで動くので、認証されたユーザーだけEFに接続できるようにしたいのです。

Silverlight は、 ブラウザの制限の元で動かざるをえないので、 そもそも Windows の認証情報を取れないんじゃないかという気が… ( ← よくわかってない f(^^; )

Silverlight アプリでユーザー名/パスワードを入れさせて、 SQL 認証を通す、 というのは出来そうな気がします。

投稿: biac | 2009年5月27日 (水) 10時28分

>サンプルコードを見る限り、 DB への接続文字を渡してますから、 SQL 認証でも Windows 認証でも効かせられると思うんだけど。 そういう話ではない? f(^^;

EFからデータベースへの接続は確かにどうにでもなると思います。問題はアプリケーションからEFへ認証情報を渡して、それをEFが使用してデータベースへ接続する道筋なんです。
どうもサンプルなんかを見ていると、アプリケーションからEFへは認証情報など渡してなく、EFは素直にデータベースからデータを取得してアプリケーションに渡しています。
あ~、でもいいのか。EFはTableAdapterみたいに考えればいいんだ。
私が気にしてたのは、ADO.NET Data ServicesとEFを組み合わせた場合、REST形式でアクセスしほうだいじゃんって思ったわけです。でもこの答えはまだ課題のようです。

ADO.NET Data Service:RESTfulな実装について4
http://blogs.msdn.com/tarok/archive/2008/03/17/ado-net-data-service-restful-4.aspx

に、以下のように書いてあります。
-----
こうようなステートを使用しない特徴を考えるとき、当然ながら疑問も湧いてくると思います。例えば、認証系やトランザクションです。
通常RESTfulで考える場合、現状はWeb⇒HTTPですから、Basic認証やダイジェスト認証はもちろん考えにあるとして、後はX-WSSE認証などの実装例も他のREST系のサービスなどで見ることができます。
実はこの辺りが、ADO.NET Data Serviceに残っている課題と言えるでしょう。
---

ちょっと私の中でごっちゃになっていたようです。すみません。
EFはTableAdapterのようなもので公開するものではなく、そのアプリケーションで使用する道具だと考えればいいんですね。きっと。

>Silverlight は、 ブラウザの制限の元で動かざるをえないので、 そもそも Windows の認証情報を取れないんじゃないかという気が…

ASP.NETでWindows認証できますから、たぶんその辺りは大丈夫じゃないかと思います。

Silverlight - ADO.NET DS - EF - データベース

というわけで、気になるのはSilverlight と ADO.NET DS の間のセキュリティ(認証)っていうわけですね。たぶん。
EF関係なかったかもf(^^;

投稿: trapemiya | 2009年5月27日 (水) 13時38分

> 気になるのはSilverlight と ADO.NET DS の間のセキュリティ(認証)

ぁあ、 了解です。
そこ、 っていうか、 Web サービスを使うときの認証は問題ですねぇ。

MS 的には、 イントラなら ActiveDirectory 使えば OK …っていうつもりなのかもしれんけど。


> EFはTableAdapterみたいに考えればいいんだ。

そうです、 そうです。
なんかいっぱい付加機能がくっついちゃって、 よくわかんなくなっちゃってるけど。 TableAdapter も EF も、 ようするに O/R マッパーだ、 ってことで。 ( 大雑把杉? f(^^; )

投稿: biac | 2009年5月27日 (水) 15時24分

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/209349/45138360

この記事へのトラックバック一覧です: ADO.NET EntityFramework ver.4:

« VAIO type P with WinXP | トップページ | NUnit の "Hello, world!" ~ C# 2008 Express + NUnit 2.5 で、 テストファーストの Step by Step »