10月8日(火)1、2コマ目
今日、やったこと
- [練習問題]練習問題1
- モデルを使う(DBアクセス)
今日のホワイトボード
[練習問題]練習問題1
前回使ったコントローラー、ビューを使う練習問題。
URLとコントローラークラス、アクションメソッドの関係は下図のとおり。
|
| 図 URLとコントローラークラス、アクションメソッドの関係 |
正解例をあげておきます。
Controllers/RandomController.cs
コントローラークラス。
クライアントからのリクエストを受けて、処理を行い、ビューを表示。
Views/Random/Index.cshtml
ビュー。
コントローラークラスRandomControllerのアクションメソッドIndex()に対応するビュー。
Views/Random/Even.cshtml
ビュー。
コントローラークラスRandomControllerのアクションメソッドEven()に対応するビュー。
Views/Random/Odd.cshtml
ビュー。
コントローラークラスRandomControllerのアクションメソッドOdd()に対応するビュー。
モデルを使う
モデル自体は構造体的なデータをまとめたモノだが、データを取得、格納するためにDBアクセスも行う。
今回はDBアクセスをO/Rマッピングツールの"Entity Framework Core"を使って、SQLなしでDBからデータを取得する。
|
| 図 DbContextクラスとコントローラークラス |
前回は以下をおこなった。
パッケージのインストール
以下の2つパッケージが必要。
- Microsoft.EntityFrameworkCore
- Oracel.EntityFrameworkCore
以前設定したローカルパッケージソース”MyPackage”から取得。
プロジェクト->NuGetパッケージの管理
パッケージソースを「MyPackage」に変更してインストール。
appsettings.json
DB接続情報(接続文字列)を設定。
Models/Group.cs
モデルのクラス。
データベースのCS_グループマスタテーブルとこのクラスを対応させるために、[Table("テーブル名")]をclassに設定。
CS_グループマスタテーブルと各プロパティを対応させるために[Column("列名")]を各プロパティに設定。
今日はここから。
Data/SampleDbContext.cs
DbContextクラスを継承。DBアクセスのポイントになるクラス。
Controllers/GroupController.cs
SampleDbContextクラスを使ってCS_グループマスタのデータを取得。
SampleDbContextクラスのインスタンスはコンストラクタの引数経由で受け取る。
DI機能を使って、SampleDbContextのインスタンスを生成、代入する。(要Program.cs編集)
Views/Group/Index.cshtml
GroupControllerから渡されたグループ一覧を表示。
Program.cs
DI機能でSampleDbContextのインスタンスを注入できるようにする必要あり。
次回は
Entity Frameworkを使ってDBアクセス。

