はじめに
データを蓄積・加工する以上、個人レベルのものであっても
システムを構築するにあたってデータベースは欠かせません。
一方、これまではデータベースの構築は手間のかかる作業となっており、
素早い開発を行う上でデータベース構築・テーブルの実装の短縮は重要といえます。
開発をC#で行う場合は、相性の良いAzure、EntityFramewokを利用することで短縮できます。
-
Azure SQL DatabaseでDBを構築すると...
- サーバのキッティングが不要で、すぐにDBを利用できる
- Infrastructure as Code(Ansible/Terraform等)との組み合わせでさらにスピード構築可能
- VisualStudioから直接Azureへ表定義が可能
-
EntityFrameworkでテーブルを設計・実装すると...
- 論理設計で作成したER図をすぐに実装できる(モデルファーストの場合。DBファーストは逆)
- クエリ/プログラムの記述を簡潔かつ共通した書き方で記述できる
両方を組み合わせることで、より素早くDB構築・設計・実装をすることが可能です
構築デモ
- 今回の開発環境
- Visual Studio Enterprise 2017 v15.4.2
- .NET Framework 4.7(C#7.0)
※Azure SQL Databaseには無料プランはない
ただし、Dev Essentialでクレジットを獲得可能(登録方法は下記リンク参照)
https://blogs.msdn.microsoft.com/ayatokura/2016/12/20/vsdevessential/
- 今回作成するテーブルの利用想定
- 従業員情報・部門・資格情報の管理を行う
1.DBリソースの配置
まず、DB部分をAzureポータルからデプロイ(このステップだけは、VisualStudioでは実行できない)
⇒**かわりにリソースグループ・DBサーバ・DBの構築までTerraformで構築可能です。こちらの記事を参照**
DBを新規作成し、画面に表示されている通り必要項目を入力すればOK
2.プロジェクトの作成
[]内は、検索窓に同じ内容を入力することで開くことができる
- プロジェクトの準備
- VisualStudioの起動
- [新しいプロジェクト]→ASP.NET Webアプリケーションを選択※
- [Nugetパッケージマネージャ]から、EntityFrameworkを選択し、インストール
- [新しい項目の追加]→ADO.NET Entity Data Model→空のEFデザイナモデルの順に選択
※コンソールやWebアプリケーション等、EntityFrameWorkを利用可能ならなんでもよい
3.ファイアウォール規則の作成
[SQL Server の追加]→先ほど作成したDBを指定して必要事項を記入する。
4.DB設計の実施
- 前提事項
- 1つの部門に対して0~n名の従業員が所属する。部門兼務や無所属はありえない
- 従業員1人は0~nの資格を持つ。1つの資格は0~n人が保有する
- 今回は簡略化のため、各idと名称の他は従業員給与のみとする
- 交差エンティティとして、LisenseInfoテーブルを作成する
edmxファイルを編集して概念設計・論理設計を行う。ドラッグ&ドロップで行える。
概念設計・論理設計のやり方は省略。(下図のような内容になるはず)
5.テーブルの生成
- テーブル定義の自動生成
- 設計画面を右クリック→モデルから新しいデータベースを設計 でウィザードを開く
- 新しい接続を選び、サーバー名を入力する(※選択肢には出てこないので手入力する)
- 残りは3.のステップと同様に入力
- テーブルの生成
- テーブルを定義するSQLが生成されるので、実行する
- 実行結果を確認。外部キーやインデックスが作成されている
この他、エンティティクラスやDBcontextも自動生成されている。
同時に自動生成されたDBContextは下記の通り。
6.次回予告
次回は、自動生成されたテーブル・DBcontextの活用編を書きます!
⇒LINQプログラミング編できました。こちらを参照