.net column

.NET開発者のためのブログメディア

実行環境

C#でDB操作するならEntityFrameworkがおすすめ!

2021年05月31日
SE
EntityFrameworkについて詳しく教えていただけませんか。
PM
ntityFrameworkはC#でデータベース処理を行うことに適したフレームワークです。ではモデルの制作とデータベースの追加、更新、削除について説明いたしましょう。

EntityFrameworkとは?


EntityFrameworkはデータベースの操作に適したフレームワークです。Ruby on Railsで言えばActiveRecordのようなものです。

従来のADO.NETはSQL文やデータベース接続のための文字列を直接書かなければなりませんでしたが、EntityFrameworkであればSQL文を書く必要がなく、短いコードでC#のみでプログラミングすることができます。

データ量が多ければ従来のADO.NETより若干処理速度は遅くなりますが、高度な保守性を保つので開発や運用に最適な選択です。

コードファーストで開発ができるためデータベースが変更されても対応しやすい事も利点です。

EntityFrameworkとは?

EntityFramework とはADO.NETの機能のひとつです。

概念アプリケーションモデル(Entity Data Model (EDM))に対してプログラムを書くのでアプリケーションの境界を超えてC#のみでプログラミングを書き進める事ができます。

最新のものではEntityFramework CoreとEntityFramework 6があります。開発はCoreを重点的に進められていますが、6つの機能のうちの幾つかはまだ移行が終わっていません。

EntityFramework Coreとは?

EntityFramework Coreは、最新の.NET用のオブジェクトデータベースマッパーです。データベースを検索するLINQ クエリ、変更履歴を監視し変更を追跡するシステム、WEBなどからの更新操作要求、構造を管理するスキーマの移行がサポートされています。

EntityFramework CoreはMySQL、PostgreSQL、SQL Database(オンプレミスとAzure)、SQLite、Azure Cosmos DBなどの主要なデータベースにはだいたい対応しています。

EntityFramework 6とは?

EntityFramework 6はCoreの以前のバージョンでもともとは.NET Framework向けのオブジェクト リレーショナル マッパーですが、NET Coreもサポートしています。

現在はこれ以上の開発は積極的に行われていないようですが、幾らかの高機能なマッピング機能がEntityFramework Coreには含まれていません。

EntityFramework coreに移行するのは不可能な機能もあるため、開発状況によってはEntityFramework 6を使用するケースもあるでしょう。中にはCoreへの移行を検討するケースもあるようです。

EntityFrameworkでモデルを制作する方法

ここでいうモデルとはテーブルやエンティティ(実体)と呼ばれるものです。エンティティとは実体と訳され、テーブルも表として実体するような形です。両方ともモデルの要素と言えます。エンティティは単数、テーブルは複数といったイメージで覚えると良いでしょう。

違いはややこしいですが概念的なものであり実際にEntityFrameworkで操作する限りにおいては同じようなものになります。

要するに、データベースに格納する情報の要件を定義するためのものです。

例えば、中古車の在庫状況を格納するデータベースを作っていたとしたら、番号や値段や車種、仕入れた日時などを記録しておく必要があると頼まれるかも知れません。

この記録しなければいけない「値段や車種や購入番号」などのプロパティ情報の型、エンティティクラスを制作することができます。

この例で言えばC#で書くとこのようになります。

情報を格納するときは、このクラスのインスタンスを使います。こうしてテーブルにマッピングをすることができ、コードファーストで他の中古商品のエンティティを作ったり関連づけしてスキーマを作る事も可能です。

モデルの制作に関してはMicrosoft公式でサンプルデータが配布されているので、ここで確認してみても良いでしょう。

実際にC#でデータベースにアクセスする方法

エンティティを作成できたら実際にデータベースにアクセスする処理を書いてみましょう。

ここではデータベース内を検索する命令をC#で記述しています。SQL文が不要でC#のみでコードを書く事ができるので従来よりコードが単純化しているのが特徴です。

探すだけではなく追加や削除も可能です。

C#でデータベースに追加、更新、削除を行う方法

次に追加や削除や更新を行ってみましょう。C#で新しくデータを追加する場合は以下のようになります。

コード内にもコメントアウトで記述していますが、更新を反映するには SaveChangesメソッドを呼び出す必要があることに注意してください。

IDがわからない場合はFindやwhereで探したものを削除、更新することもできます。

以上のようなメソッドを使う事でSQL文を書く事なくC#で処理する事が可能です。

実際にアプリケーションを作る場合は直接メイン処理にデータベースを操作するような記述を書くよりはアプリケーション内で操作が行われたタイミングで特定処理やフィルタが動作するように書かれるケースが多いでしょう。

MVC自体を説明すると長くなってしまうのでここでは割愛しますが、Microsoft公式でサンプルデータが配布されているので、実際に確認してMVC形式のアプリケーションの作り方を参考にすると良いでしょう。

SE
C#でデータベースにアクセスしたり、データベースに追加、更新、削除を行う方法がよくわかりました。
PM
ご紹介したとおり、EntityFrameworkはデータベースの操作のためのフレームワークで、シンプルに開発できるようになりますので、ぜひ利用してみてください。

まとめ

EntityFrameworkはデータベースの操作のためのフレームワークです。データベース操作をSQL文を書くことなくC#のみで書く事ができるのでシンプルに開発をする事が可能になります。

データベース操作には不可欠なモデルの制作とその操作が単純に記述できるためデータベースに慣れていない開発者の方にもおすすめです。

C#でデータベースアプリケーションを開発する際はぜひ利用を検討してみてください。


.NET分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)

Search

Popular

reccomended

Categories

Tags