10月22日(火)1、2コマ目
今日、やったこと
[練習問題 解説]練習問題4
LINQ
今日のホワイトボード
[練習問題 解説]練習問題4
検索サイトの作成。正解例をあげておきます。
Models/Maker.cs
メーカーマスタに対応するクラス。練習問題3とおなじ。
Models/Genre.cs
製品ジャンルマスタに対応するクラス。練習問題3とおなじ。
Models/Camera.cs
製品マスタに対応するクラス。練習問題3とおなじ。
Models/SearchViewModel.cs
コントローラーからビューにデータを渡すために利用。
Data/SearchDbContext.cs
DBアクセスを担当。練習問題3とおなじ。
Controllers/SearchController.cs
アクションメソッドIndex()は2つあるが、[HttpPost]アノテーションが付いている方はPOSTコマンドでリクエストされたときに実行。
ビューにデータを渡す際、今までのViewDataを使わずに、ViewModelを利用。
Views/Search/Index.cshtml
コントローラーからViewModelでデータを受け取る。
LINQとは
LINQは.Netでコレクションのデータを操作するためのライブラリ。
メソッド構文とSQLに似たクエリ構文がある。この授業ではクエリ構文を使う。
今まで使っていたEntityFrameworkCoreでLINQを使ってDBアクセスを行う。
準備
EntityFrameworkCoreでCS_グループマスタテーブル、CS_商品マスタテーブルにアクセスするために、モデルクラス、DbContextクラスを用意。
[モデルクラス]Group.cs
CS_グループマスタテーブルに対応するクラス。
[モデルクラス]Item.cs
CS_商品マスタテーブルに対応するクラス。
DbContextクラス
今までと同じようなDbContextクラスを用意。
LINQでDBアクセス
簡単なモノから順に紹介。
CS_グループマスタテーブルを全件検索
|
| 図 CS_グループマスタテーブル全件検索 |
CS_商品マスタテーブルを全件検索
CS_商品マスタテーブルの商品名、価格列を全件検索
取得する列を指定する。
検索結果の受け渡しにはItemクラスを使わず、匿名クラスを使っている。検索結果は商品名と価格だけなので、Itemクラスを使うほどではない。
匿名クラスは一時的に使うクラス。
検索結果の受け渡しの際、まとめて受け渡しができれば便利だが、そのためだけにクラスを新たに作るほどではない(ここしか使うことがないため)。そんなときは名前がない匿名クラスが便利。
次回は
テストをします。
LINQのつづきをやります。
