HOME  -  スタッフコラム

<< 戻る コラム最新コラムへ >>
☆スタッフITコラム☆
  Entity Frameworkについて
 By タカ 2018/01/05

 新しい案件でEntity Frameworkというフレームワークを使うので少し学習してみました。
Entity FrameworkとはADO.netのコンポーネントであり、データベースとの接続と操作をより簡潔に行えるようにするためのものです。その特徴は、Entity Data Model(EDM)と呼ばれるモデルを使用します。EDMは「概念モデル」とも呼ばれ、開発者がデータベースの表形式の構造にとらわれない、外部のデータソースにとらわれず同じ手法で開発がおこなえるところが特徴です。外部データソースであれば、データベース、XML文書問わず同じコーディングで開発が出来ます。
 
 Entity Frameworkの開発スタイルには3つあり、それぞれデータベースファースト、モデルファースト、コードファーストがあります。
データベースファーストは既に存在するデータベースからEDMを生成する方法です。
モデルファーストとはまずEDMを生成し、そこからデータベースを生成する方法です。
そしてコードファーストとは、アプリーション側でクラスとしてデータ構造を定義し、実行時にデータベースを生成する方法です。
 
 実際にコードファーストでの実装を試してみました。
まず、Entity FrameworkをVisualStudioにインストールします。
そして、テーブルと同じ項目名をクラスとして定義します。この項目が、データベースの実際のテーブルに変換されます。
データの操作は、LINQを使います。定義したクラスに対してデータの追加を行うサンプルソースを実行してみました。
実行後、SQLサーバーを見てみると、実行前にはなかったテーブルが作成されていました。
 
 メリットとしては、SQLとは違い、C#のコードとして記述するので、インテリセンスも使え、SQL文字列として記述するのではないので、実行時に初めてシンタックスエラーが発生してしまうという事もありません。また、ADO.netのみだと、処理前にデータベース接続、処理後にデータベースクローズ等の操作が必要ですが、その辺の処理はすべてやってくれるので、コードが簡潔になります。
極端にいうと、データベース設計、構築する前に開発が進められるという事であり、開発のスピードは上がると思います。
 デメリットとしては、速度的には遅い、開発者がDBの定義も一部考慮する必要があるという事です。また、LINQの扱いにも慣れる必要があります。
 ここで気づいたのは、うちのDBAccessというクラスでデータアクセスを作っている手法が、少し似ていると思いました。一度これを定義しておけば、DB操作ではこのクラスを呼び出す事で割と簡潔に、またインテリセンスも効く開発が出来ています。
 
 まだ、追加・更新のみの実装ですが、例えばトランザクション処理なども今後試してみようと思います。


<< 戻る コラム最新コラムへ >>