LoginSignup
23
12

More than 5 years have passed since last update.

EntityFramework+Azure SQL Databaseで高速な開発を実現する-環境構築編

Last updated at Posted at 2017-12-10

はじめに

データを蓄積・加工する以上、個人レベルのものであっても
システムを構築するにあたってデータベースは欠かせません。
一方、これまではデータベースの構築は手間のかかる作業となっており、
素早い開発を行う上でデータベース構築・テーブルの実装の短縮は重要といえます。

開発を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

image.png

image.png

2.プロジェクトの作成

[]内は、検索窓に同じ内容を入力することで開くことができる

  • プロジェクトの準備
    • VisualStudioの起動
    • [新しいプロジェクト]→ASP.NET Webアプリケーションを選択※
    • [Nugetパッケージマネージャ]から、EntityFrameworkを選択し、インストール
    • [新しい項目の追加]→ADO.NET Entity Data Model→空のEFデザイナモデルの順に選択

※コンソールやWebアプリケーション等、EntityFrameWorkを利用可能ならなんでもよい

3.ファイアウォール規則の作成

[SQL Server の追加]→先ほど作成したDBを指定して必要事項を記入する。

image.png

4.DB設計の実施

  • 前提事項
    • 1つの部門に対して0~n名の従業員が所属する。部門兼務や無所属はありえない
    • 従業員1人は0~nの資格を持つ。1つの資格は0~n人が保有する
    • 今回は簡略化のため、各idと名称の他は従業員給与のみとする
    • 交差エンティティとして、LisenseInfoテーブルを作成する

edmxファイルを編集して概念設計・論理設計を行う。ドラッグ&ドロップで行える。
概念設計・論理設計のやり方は省略。(下図のような内容になるはず)

image.png

5.テーブルの生成

  • テーブル定義の自動生成
    • 設計画面を右クリック→モデルから新しいデータベースを設計 でウィザードを開く
    • 新しい接続を選び、サーバー名を入力する(※選択肢には出てこないので手入力する)
    • 残りは3.のステップと同様に入力
  • テーブルの生成
    • テーブルを定義するSQLが生成されるので、実行する
    • 実行結果を確認。外部キーやインデックスが作成されている

Dept.png

Employee.png

Lisense.png

LisenseInfo.png

この他、エンティティクラスやDBcontextも自動生成されている。
同時に自動生成されたDBContextは下記の通り。

image.png

6.次回予告

次回は、自動生成されたテーブル・DBcontextの活用編を書きます!
LINQプログラミング編できました。こちらを参照

23
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23
12