ピースペース

Scafoldで生成される、Post用のActionメソッドの意味がわからない(T.T)

leave a comment »

(ModelState.IsValid) の意味がわからない!
ModelStateって、一体なに??
そもそも、メソッドに渡されるModelがどこでだれがどうやって準備してくれたの?
が、わからない

db.Entry(model).State = EntityState.Modified の意味がわからない!!
StateがReadOnlyじゃないのが違和感ない??
あまにも唐突でない??

これでちゃんとDBのレコードが更新される ←のは、不可思議に満ちている
そして、その不思議の気持ちのよいタネ明かしがなかなか見つからない(T.T)

ModelStateってのは、Controllerのプロパティで
ControllerがActionを実行する前に自動的に行ったモデルバインディングの結果が格納されている
ので、MVCのモデルバインディグについて理解が必要

db.Entry(model).Stateってのは、EFの流儀でMVCとは直接は関係なく
EFのしきたりを知る必要がある

で、
例えば、Requiredな外部キーを持つModelの場合など
Scafoldが生成するActionMethodがそのまま使える場合はなく
応答に含まれるidでEntityを再度読み直し
そのmodelオブジェクトに対して、
TryUpdateModeを使って、
”変更を適用するプロパティを指定して”、 ←ここ重要
明示的にバインディングする必要がある

と、書いてしまうと
それは、あたりまえで、あえて説明する必要もないほど常識的なことに思えてくる
が、その「常識でしょ!」を説明する面倒くさい作業をやってほしい→MSさん

Written by nasu38yen

2011年7月20日 @ 9:49 AM

カテゴリー: 未分類

Tagged with

コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中

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