コンテンツへスキップ

ASP.NET Dynamic Data [削除]時はEntityには主キーしか格納されないのね

2009年8月20日

前回では、SqlDateTime範囲外の値を渡そうとしている、ということが判明した。

でもさ、そんなことしてるつもりは一切無いのよ。

Date型のMinValueは、1年1月1日だっけ?これはSqlDateTimeには入らないよね。MaxValueは9999年12月31日だっけ?これはSqlDateTimeには入るかな。きっと何かの原因でSQLパラメーターにMinValueが渡されちゃってんだろうな。Entityのオレの関知しないところで。

DetailsView1_ItemDeletedの前にエラーになっちゃってるのは前回分かったから、それより前のイベント Page_Load からステップオーバー(F10)で臭そうな個所を探してみる。F11だと深いところまで入って行っちゃうけどF10だとプロシージャの中にステップインしていかないので、表面階層だけシングルステップで進めたい時に便利。

Details.aspx.vbのPage_Load → 各フィールドテンプレートのPage_Load → Entityデータモデル分離コードのデータ充填 → Entityデータモデル分離コードのデータ参照

こんな順序。

まずEntityデータモデル分離コードのデータ参照してる個所でDate型フィールドの値はどうなってるか見てみると、あれれ? #12:00:00 AM # これってMinValueね。

じゃ、データ充填してるとこでデータベースの値ではないMinValueをセットしてんの?と思って見てみると、充填すらして無く、充填してんのは主キーだけだった。(Date型の初期値ってMinValueなんだっけ?)

ん?ちゅうことは・・・

実はEntityデータモデルで、挿入・更新・削除に関数(ストアドプロシージャ)をマッピングしてるんだが、オレ、削除ストアドも全フィールドをパラメーターにしている。でも、削除時に充填されんのは主キーだけだから、こうなるのか~。

削除ストアドのパラメーターを主キーだけにするしかないかなぁ・・・。

次回に続く

From → .NET

コメントする

コメントを残す

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

WordPress.com ロゴ

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

Google フォト

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

Twitter 画像

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

Facebook の写真

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

%s と連携中

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