SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Scott Guthrie氏 Blog翻訳

Entity Framework コードファーストのお知らせ(CTP5リリース版)

連載:ScottGu's Blog翻訳


ビルトインのモデル検証

 EFコードファーストでは、モデル層にビジネスルールを実装する時に、どの検証方法でも使用できます。これにより、大きな柔軟性とパワーが得られます。

 今週のCTP5リリースから、.NET 4にビルトインされているDataAnnotationおよびIValidatorObject検証サポートが、ともにビルトインサポートとしてEFコードファーストに含まれるようになります。これにより、モデル上で簡単に検証ルールを実装し、モデル層を保存する際に自動的にEFコードファーストが必ずそれらのルールを実行するようにできます。また、非常に便利な『自由な』方法で、アプリケーションでの検証が行えます。

NorthwindモデルにDataAnnotationsを適用

 以下のコード例は、『Product』モデルの2つのプロパティへ、いくつかの宣言的検証ルールを追加する方法を示しています。

caption

 上記では、[Required]と[Range]属性を使用しています。これらの検証属性は、.NET 4にビルトインされているSystem.ComponentModel.DataAnnotations名前空間にあり、EFとは別に使用できます。それらに特定されているエラーメッセージは、明示的に定義すること(上記のように)も、リソースファイルから取得すること(アプリケーションのローカライズが簡単になります)も可能です。

SaveChanges上で検証の強制実行

 EFコードファースト(CTP5以降)は、モデルオブジェクトが更新または保存された時に、DataAnnotationルールを自動的に適用および強制実行します。これを強制実行するためのコードを書く必要はありません。このサポートは、現在はデフォルトで実行可能です。

 この新しいサポートは、以下のコードを意味しています。上記のルールに違反した場合、NorthwindのDbContext上の『SaveChanges』メソッドを呼び出すと、例外が自動的に投げられます。

caption

 SaveChangesメソッドが呼び出された時に発生するDbEntityValidationExceptionには、モデルが保存しようとした時に起こったすべての検証エラーを、一覧で取得するのに使用できる『EntityValidationErrors』プロパティが含まれています。これにより、簡単にユーザーへ修正方法が示せます。EFコードファーストは、もし検証ルールが違反されれば、データベースを必ず適正で整合性のある状態に保っておくために、すべての変更トランザクションを中止します。

 EFコードファーストの検証強制実行は、ビルトインの.NET DataAnnotation(Required、Range、RegularExpression、StringLengthなど)、およびSystem.ComponentModel.DataAnnotations.ValidationAttributeベースクラスのサブクラスで作成した独自の検証ルールの両方で動作します。

UI検証サポート

 .NETにある多くのUIフレームワークが、DataAnnotationベースの検証ルールをサポートしています。例えば、ASP.NET MVC、ASP.NET Dynamic Data、Silverlight(WCF RIAサービス経由)はすべて、モデルオブジェクトに適用されたDataAnnotationルールに従う、クライアントサイドの検証UIの表示をサポートしています。

 以下のスクリーンショットは、ASP.NET MVC 3アプリケーションで値が適切でなかった場合に、適切な検証エラーメッセージを表示させる時の、デフォルトの[追加]-[ビュー]スカフォールドテンプレートの使用方法を示しています。

caption

 ASP.NET MVC 3は、クライアントサイドおよびサーバーサイドの両方で、これらの検証ルールをサポートしています。表示されるエラーメッセージは、独自にコードを書く必要なく、宣言的検証属性から自動的に選択されます。

DRYに保つ

 『DRY原理』は、『Do Not Repeat Yourself』の頭文字を取ったもので、アプリケーション内で複数個所に渡り、ロジック/構成/コードを重複しないようにし、1か所で指定してすべてにそれを適用することを推奨したベストプラクティスのことです。

 EFコードファーストCTP5では、モデルクラス上に宣言的DataAnnotation検証を適用し(1か所で指定し)、コントローラ、ビュー、クライアントサイドスクリプトや、またモデルクラスを更新、操作する独自のコードを含む、すべてのアプリケーションシナリオで、その検証ロジックが強制実行(そして対応したエラーメッセージを表示)するようにできます。

 これにより、クリーンなコードの良いアプリケーションや、素早く反復、展開できるアプリケーションを、簡単に構築できるようなります。

 

次のページ
CTP5のその他のEFコードファーストの改善点

この記事は参考になりましたか?

Scott Guthrie氏 Blog翻訳連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト Chica(チカ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Scott Guthrie(Scott Guthrie)

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/5657 2011/01/24 17:11

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー