Code Firstすべきや、すべからざるべきや

When is Code First not code first? – ADO.NET team blog – Site Home – MSDN Blogs.

ADO.NETチームのBlogでEF4.1の目玉でもあるCode Firstを使うか使わないかの選択方法について書かれています。

以下は僕の考え方。

Code Firstが適当かどうかは、どの様にシステム開発を行うのかという方法論からの選択肢と、既存システムの改修や、既存データベースのあるなしによる選択肢があると考えられます。

スクラッチで作るシステムで、DDDのようなクラス設計を主体に行って、それをストレージするためにRDBMSが必要だというような開発スタイルでは、Code First、特にCode Firstで書かれたクラスから、DBのスキーマを作成する方法が適切だと思います。ただし、その後のRDBMSのチューニングやインデックスの付け方、将来拡張時や保守の方法については十分検討する必要があると思います。

スクラッチで作るシステムで、T字型等を使って、データのスキーマから設計するような場合は、分析段階のデータスキーマから、EFのモデルを作るModel Firstか、一度DBのスキーマ設計やストアードプロシージャー、ビューなどの設計、実装を行った上で、Database Firstで始めるのが良いのではないかと思います。

既存システムの拡張や、既存DBを流用するようなケースでは、既存のDBについてはDatabase FirstでまずDBアクセス技術をEFまで持ち上げた後に、追加分を開発プロセスや手法にあわせてCode FirstやModel Firstで行っていくことになるのかなと思っています。

基本的に主たる設計者の技量にあわせてと言うところが大きいと思いますので、EF4.1にCode Firstが含まれ、売り機能なのでそれに関する情報がたくさん出てくるとは思いますが、必ずしも無理にDDDでCode Firstである必要は無いと思います。(もっと言えばEFである必要も無いのかもしれませんけどね)

コメントを残す