Asp.net-mvc-databases
ASP.NET MVC-データベース
このチュートリアルで作成したすべてのASP.NET MVCアプリケーションでは、ハードコードされたデータをコントローラーからViewテンプレートに渡しました。 ただし、実際のWebアプリケーションを構築するには、実際のデータベースを使用することをお勧めします。 この章では、アプリケーションに必要なデータを保存および取得するためにデータベースエンジンを使用する方法について説明します。
データを保存および取得するには、Entity Frameworkと呼ばれる.NET Frameworkデータアクセステクノロジを使用して、モデルを定義および操作します。
Entity Framework(EF)はCode Firstテクニックをサポートします。これにより、単純なクラスを記述することでモデルオブジェクトを作成でき、クラスからその場でデータベースが作成されるため、非常にクリーンで迅速な開発ワークフローが可能になります。
簡単な例を見てみましょう。この例では、Entityフレームワークのサポートを追加します。
- ステップ1 *-Entity Frameworkをインストールするには、プロジェクトを右クリックし、NuGetパッケージマネージャー→ソリューション用のNuGetパッケージの管理…を選択します。
Entity Frameworkを選択し、「インストール」ボタンをクリックします。 [プレビュー]ダイアログが開きます。
[OK]をクリックして続行します。
[同意する]ボタンをクリックして、インストールを開始します。
Entity Frameworkがインストールされると、上記のスクリーンショットに示すように、アウトウィンドウにメッセージが表示されます。
DBContextを追加
次のコードを使用してデータを取得および保存するために、Entity Frameworkと通信する別のクラスを従業員モデルに追加する必要があります。
上記のように、 EmpDBContext は DbContext として知られるEFクラスから派生しています。 このクラスには、DbSetという名前のプロパティが1つあります。このプロパティは、基本的にクエリおよび保存するエンティティを表します。
接続文字列
Web.configファイルでデータベースの<configuration>タグの下に接続文字列を指定する必要があります。
実際には、EmpDBContext接続文字列を追加する必要はありません。 接続文字列を指定しない場合、Entity FrameworkはDbContextクラスの完全修飾名を使用してユーザーのディレクトリにlocalDBデータベースを作成します。 このデモでは、簡単にするために接続文字列を追加しません。
ここで、ハードコードされたデータを使用する代わりに、データベースからデータを実際に保存および取得できるように、EmployeeController.csファイルを更新する必要があります。
まず、プライベートEmpDBContextクラスオブジェクトを作成して追加し、次に、次のコードに示すように、Index、Create、Editアクションメソッドを更新します。
次に、このアプリケーションを次のURL http://localhost:63004/Employee で実行します。 次の出力が表示されます。
ビューにデータがないことがわかるように、これはVisual Studioによって作成されたデータベースにレコードを追加していないためです。
SQL Serverオブジェクトエクスプローラーに行きましょう。DBContextクラスにあるのと同じ名前でデータベースが作成されます。
このデータベースを展開すると、Employeeモデルクラスにあるすべてのフィールドを含む1つのテーブルがあることがわかります。
このテーブルのデータを表示するには、Employeesテーブルを右クリックして、View Dataを選択します。
現時点では記録がありません。
次のスクリーンショットに示すように、データベースにいくつかのレコードを直接追加しましょう。
ブラウザを更新すると、データがデータベースからビューに更新されていることがわかります。
[新規作成]リンクをクリックして、ブラウザから1つのレコードを追加しましょう。 作成ビューが表示されます。
次のフィールドにデータを追加しましょう。
[作成]ボタンをクリックすると、インデックスビューが更新され、この新しいレコードがデータベースに追加されます。
次に、SQL Serverオブジェクトエクスプローラーに移動して、データベースを更新します。 Employeesテーブルを右クリックして、[データの表示]メニューオプションを選択します。 レコードがデータベースに追加されていることがわかります。