CTP5のその他のEFコードファーストの改善点
EFコードファーストCTP5には、その他の改善点も数多く含まれています。以下は、それらの紹介です。
- Fluent APIの改善
- プラガブル・コンベンション(Pluggable Conventions)のサポート
- 新しい変更追跡API
- 同時実行の競合の解決を改善
- 生のSQLクエリ/コマンドのサポート
- DataAnnotationの完全サポート
EFコードファーストでは、DbContextクラス上の『OnModelCreating』メソッドをオーバーライドして、配下にあるデータベーススキーマにモデルクラスをマップするのに使用しているスキーマのマッピングルールを、さらに調整/オーバーライドできます。
このメソッドを用いることで、マッピングルールをさらにクリーンで簡潔にすることが可能です。CTP5では、このメソッドに引き渡されるModelBuilderクラスに対してもいくつかの調整が行われました。
ADO.NETチームは、これを行う方法を示したサンプルをここで、ブログ投稿しています。
EFコードファーストCTP5では、EFコードファーストが従う『デフォルト規約』(オプションにより独自の規約と置換も可能)をオーバーライドできます。
EFコードファーストCTP5では、新しい変更追跡情報が公開され、Original、Current、Storedの値とState(Added、Unchanged、Modified、Deleted)にアクセスできます。このサポートは、さまざまなシナリオで便利に使用できます。
EFコードファーストCTP5では、例外メッセージが改善され、影響しているオブジェクトインスタンスへのアクセスや、現在の値、オリジナルの値、データベースの値を使用して競合が解決できる機能へのアクセスが可能になりました。
EFコードファーストCTP5では、DbContext.Databaseプロパティを公開するために、SqlQueryおよびSqlCommandメソッドを通じて、生のSQLクエリおよびコマンド(SPROCを含む)が実行できます。これらのメソッド呼び出しの結果は、オブジェクトインスタンスに具現化でき、オプションでDbContextで変更追跡できます。これは、さまざまな上級なシナリオで、便利に使用できます。
EFコードファーストCTP5では、.NET内のすべての標準のDataAnnotationがサポートされるようになり、EFコードファーストが、データベース作成シナリオで使用された時に、検証を実行するため、または自動的に適切なデータベーススキーマを作成するために使用できます。
まとめ
EFコードファーストでは、エレガントで強力な方法でデータが取り扱えます。私がこれを非常に好きな理由は、究極にクリーンでベストプラクティスをサポートしつつ、ソリューションが非常に速く実装できるからです。ライブラリのコードのみの方法とは、最終的にモデル層が非常に柔軟性があり簡単にカスタマイズできるようになることを意味しています。
今週のCTP5リリースは、さらにEFコードファーストを調整し、来年初旬に出荷された際に、非常に良いものにするためにものです。いますぐNuGetを使ってインストールして、試して頂くことをお勧めします。恐らく、製品の素晴らしさに驚かれると思います。
Hope this helps,
Scott
