EntityFrameworkのメリット・デメリット

Microsoft.EntityFrameworkCoreを使用してC#のWEBアプリケーション開発を行っている。
開発方針として、なるべくSQLを記述しなくても済むようにという
生産性を意識した開発を行ってきたが、
大量データの追加・更新の際のレスポンスが遅いという問題が発生した。

————————————-

調査した結果、EntityFrameworkを使用してDB操作している箇所がボトルネックとなり、
処理遅延の原因になっていた事が分かった。
これを受けて、対策としてはEntityFrameworkによるDB操作をやめ、
NativeなSQLによるDB操作に切り替えをした。

感覚値だが、EntityFrameworkでのInsertが0.05秒だとして
NativeなSQLは0.01秒程度にまで改善された。

以下にメリットデメリットをまとめる。

————————————-

<メリット>
 EF使用:
  ・SQLを記載しなくても、Entityへの項目移送さえきちんとできていれば、
   Insert、Delete、Updateも容易。
    →生産性が高い。

  ・DB変更(項目追加、変更)などに対応しやすい。
   Entityさえ載せ替えてしまえばよいので、DB変更に伴うAbortなどが起きにくい。

 SQL :
  ・EF使用と比較して、処理速度が圧倒的に速い。
   大量データをさばくのなら、こちらが便利。

<デメリット>
 EF使用:
  ・とにかくNativeなSQLに比べて遅い。体感的には3倍程度のイメージ。

 SQL :
  ・DB変更に対してのインパクトが起きやすい。

————————————-

以上の事から、プロジェクトによる方針決めはあると思うが、

 ・それほどレスポンスが気にならない更新処理(マスメンなど)はEF使用。
 ・レスポンスの速さが求められる処理はNativeなSQLで実装する。

が、落としどころとしてはよいのではないかと思う。

コラム

次の記事

コロナ禍の中で