Entity Framework 4 はじめてみました

いろいろありまして Entity Framework 4 など触り始めてみました。
今のところ、情報があまりあるという状況では無さそうな感じですので、手さぐりで何とか進めてる状況であります。
そんな中で調べて分かったことメモなど。。

まずは Scott Guthrie 氏の翻訳記事から目を通す。

で、SQL Azure Team Blog でよさげなビデオもあるのでそちらも参照。

さてなんとなく何したらいいのか分かってきたので、実際にテーブル作って Entity Framework 4 でコーディングしてみようってことで。
まずDBでも作るかね~。今回はいろいろありましてキーとなる列は uniqueidentifier 型を使って挿入時に自動GUID発行とかしようと思いまして、そのように(既定値にNEWID()を指定して)定義。
その後 Visual Studio でDBからモデルを作成。
全く問題なし。

んでは早速コードでエンティティ作ってコンテキストに追加して SaveChange っと…
どれDB側見てるかね → uniqueidentifier 列に自動でGUID入ってねぇぇぇ\(^o^)/

いろいろ見てると、モデル作った後、プロパティで StoreGeneratePatternIdentity にしないといけないとかなんとか。
ふーん。なるほどそういうのが必要なのね。ということで設定して再実行 → やっぱかわらねぇえええ\(^o^)/
よく見たら外人さんも Whaaaaaaaaa??! って言ってたw
さてよくよく見てみると、件のプロパティを設定することで作成されたモデルのファイル (.edmx ファイル) のCSDL側には annotation:StoreGeneratedPattern=”Identity” が設定されてましたがSSDL側の定義には追加されてませんでした。
てことで StoreGeneratedPattern=”Identity” を追加 → (∩´∀`)∩ ちゃんと自動でGUIDが生成されて新規レコードできたよー!いやー @LeeDumond さんありがとう。

さて次は…更新系はエンティティのプロパティいじって SaveChange したらOKね。ふむふむ。
あとレコードが更新された日付は持っておきたいけど、いちいちコード側で入力するのは面倒だな → じゃ DateTime 型で既定値は GETDATE() で。
挿入と更新のときに処理するには StoreGeneratePatternComputed を指定すればいいのね。あとさっきの教訓で .edmx ファイルも修正してと。 うん挿入時に自動で日付入りますね。じゃ更新は… Whaaaaaaaaaaa?!?
なんか更新時に自動的にしたかったらトリガー使えだと…とりあえずそうするか、ということでトリガー作りました。。。

うーん、合ってるかどうかわからない。
でも止まれないので次行きます。

次はトランザクションとロールバックですね。よさげなQ&Aが StackOverflow にありましたのでそちらを参考に TransactionScope() を使ってと。(なんかEJBで似たようなことしたなぁと、ふと思った)

よし、期待する動作になったのでトランザクションもOKっと。

さて次につぶしておきたいのが一括更新系の処理ですね。なんかLINQは一括更新系が苦手とかちらっと見たので、ストアドとどっちがいいのかぼやいてたら @onos さん、 @isisaka さん、@Chuki さん、@twit_ahfさんにいろいろアドバイスもらいました。ありがとうございます。サブクエリがあるならストアドで一発で!というありがたいお言葉。ためになります。
で、さっそくストアド作ろうかと思ったのですが、おいらストアドさっぱり…思考停止になったのとタイムアップで今日はおしまいとしました。ふぅ。

あとあと考えて @shibayan さんが Entity Framework の記事書いてたなーと思い見てるところです。

まだまだ見始めたばっかりなので用語もあやふやだし、”慣れてない”感ばりばりではありますが、ちゃんと理解するとこんなおいらでもDBアクセスができる!と思ってわくわくしてます。
今回まだCTPってこともあってコードファーストは見送ったんですが、こっちもどこかでちゃんと見てみたいですね~。(DBから入るよりは性にあってる)

モデル周りが前に進みそうなので、やっと次が見えてきました。 Azure への道はあとどれぐらいなんだろうw

Entity Framework 4 はじめてみました」への1件のフィードバック

  1. ピンバック: .NET Clips

コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中