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のつづきをやります。

このブログの人気の投稿

10月31日(木)1、2コマ目

10月15日(火)1、2コマ目

11月7日(木)1、2コマ目