de:code 2015 レポート day2 - DEV-008
クロスワープの大鷲です。
de:code 2015 day2 のレポート、最後の記事をお届けします。
参加セッション
私が参加したセッションは以下の通りです。
本記事では、最終セッション「DEV-008 進化は止まらない! ADO.NET Entity Framework の今」のレポートをお届けします。
資料はこちらで公開されています。
その他のセッション動画及びスライド資料も Channel9 で公開されています。
オープニング キーノートは Microsoft Virtual Academy のサイトで公開されています。
day 1
CODE | ROOM | TITLE |
---|---|---|
SNR-004 | Room G | デジタルテクノロジーが推進する、アプリケーション革新 |
SPL-001 | Room C | マイクロソフトが考える 5 年後を見据えた技術提言 |
CHK-002 | Chalk Talk | クラウドアプリケーションのアーキテクチャ設計を深める |
CHK-003 | Chalk Talk | プログラミング パラダイムの知識を深める |
CDP-008 | Room C | MS版Docker 誕生! Windows Server Containers とは? |
day 2
CODE | ROOM | TITLE |
---|---|---|
ARC-001 | Room A | クラウド時代のデータアーキテクチャ |
SNR-009 | Room B | フルスタックエンジニアとか無理! 比べてわかったAzure PaaSの勘所 |
DEV-019 | Room F | 徹底解説! プログラマーがおさえておくべき Azure Active Directory のすべて |
PBS-001 | Room E | ここまでできる! Office 365 API を活用したアプリ開発 ~ Office 365 内のデータ活用~ |
DEV-006 | Room A | ASP.NET 5 Web 開発 ~ ランタイム編 ~ |
DEV-007 | Room A | ASP.NET 5 Web 開発 ~ フレームワーク編 ~ |
DEV-008 | Room A | 進化は止まらない! ADO.NET Entity Framework の今 |
DEV-008 進化は止まらない! ADO.NET Entity Framework の今
スピーカーは日本マイクロソフトの井上 大輔さん。
最終セッションも Developer 向けのセッションです。
EntityFramework も ASP.NET とともにメジャーバージョンアップが予定されているので楽しみにしていたのですが、セッションは現行の EF6 に関する内容が中心で、やや狙いが外れた感じでした。
それから正直、このセッションはデモが失敗してばかりで、何をしたいのかよくわかりませんでした…。
EF6 に関しては特に目新しい話はありませんので割愛させて頂きます。
コード生成方法のガイドライン
EF6 はコード生成の方法として、edmx ファイルを使う方法と、Code First という方法をサポートしています。
また、どちらの方法に関しても、コードからデータベースを生成するという方向と、データベースからコードを生成するという方向をサポートしています。
この辺りのネーミングは歴史的事情があって、やや混乱していますが、整理すると以下のようになります。
- edmx からデータベースを生成(Model First)
- C# コードからデータベースを生成(Code First)
- データベースから edmx を作成(Database First)
- データベースから C# コードを生成(Database First の Code First)
最後の「Database First の Code First」はまったく Code「First」ではないのですが、「Code First」というのは「edmx からコードを生成するのではなく、edmx を使わずにいきなりコードを書く/生成する」という程度の意味です。
セッション中では、どの方法を使うかのガイドとして、以下のようなものを提唱していました。
- 既にシステムにドメイン クラスが存在しているなら Code First
- 既にデータベースが存在しているなら Database First(edmx を使うかどうかは好みで)
- ドメイン駆動で開発したいなら Model First
最後の「ドメイン駆動で開発したいなら Model First」というのは、システムにはドメインクラスも RDB もない状態で新規に作る場合に、ドメインモデルと RDB のどちらを先に設計するかで決めるということだと思います。
ただ、このガイドはどうかと思います。
ドメインクラスがそのまま EF の Code First のクラスとして使えるかと言うと怪しいですし、新規のドメイン駆動開発で Code First を採用してももちろん構いません。
Code First が登場した当時は、edmx と Code First では全く異なるコードが生成されていたのですが、現在は edmx からでも Code First と同じコードが生成されるので、デザイナーを使うかどうかの好みの問題でしかありません。
また、セッション中では触れられていなかったのですが、次期バージョンである EF7 では、そもそも edmx デザイナーが削除されて、Code First のみになるようです。
Entity Framework 7
EF7 の大きな特徴の一つに、RDB だけでなく、いわゆる NoSQL データベースのサポートが追加されるという点が挙げられます。
ただし、予定はされているものの、現時点ではまだ実装されていないようです。
また、.NET Core 5 で動くようになるため、これまで使えなかった Windows Phone 等のデバイスでも利用できるようになるのは大きいと言えます。
生成される SQL の質がかなり改善されてシンプルになっているという利点もあります。
ただし、EF7 には最初は EF6 の全機能が搭載されるわけではなく、そのままアップグレードできるようにはなっていないという点には注意が必要です。