10月27日(月)1コマ目
今日、やったこと
- [練習問題 解説]練習問題5(ViewModelを使う)
- LINQ
今日のホワイトボード
[練習問題 解説]練習問題5(ViewModelを使う)
コントローラからビューにデータを渡す際、ViewDataではなく、ViewModelを使う。
ソースコードをあげておきます。
[モデル]Models/Maker.cs
製造メーカーマスタテーブル対応クラス。
[モデル]Models/Genre.cs
製造ジャンルマスタテーブル対応クラス。
[モデル]Models/Camera.cs
製品マスタテーブル対応クラス。
[モデル]Models/SearchViewModel.cs
ViewModelクラス。このクラスを使って、コントローラからビューにデータを渡すときは、このクラスを使う。
[コントローラ]Controllers/SearchController.cs
コントローラからビューに渡すデータは、SearchViewModelクラスをつかっている。
[ビュー]Views/Search\Index.cshtml
@model でコントローラから渡されるViewModelの型を指定。
コントローラから渡されたViewModelは Model でアクセス可能。
LINQ
LINQは、.Netでコレクションのデータを操作するためのライブラリ。
メソッド構文とSQLに似たクエリ構文がある。この授業では、クエリ構文を使う。
今まで使っていたEntityFrameworkCore+LINQでDBアクセスを行う。
サンプルプログラム
DBアクセスに関する部分は今まで作ってきたMVCモデルのアプリケーションとほぼ同じ。
Webにするほどではないので、コンソールアプリで作成した。
パッケージのインストール
今までと同じように、"NuGetパッケージの管理"で以下の2つのパッケージをプロジェクトにインストール。
- Microsoft.EntityFrameworkCore
- Oracle.EntityFrameworkCore
[モデル]Group.cs
CS_グループマスタテーブルに対応するクラス。
今までと同じ。
[モデル]Item.cs
CS_商品マスタテーブルに対応するクラス。
今までと同じ。
スーパークラスのObjectクラスが持つToString()メソッドをオーバーライド。
オーバーライドの際、C#では、 override を指定する必要がある。
|
| 図 ToString()メソッドをオーバーライド |
SampleDbContext.cs
今までほぼ同じ。
ただし、コンソールアプリには、設定ファイルappsettings.jsonがない。
かわりにApp.configに接続文字列を定義。
App.configから接続文字列を読み込む部分が異なる。
※4行目、6行目のプロパティがList<>型になっていたが、DbSet<>型の間違い。
すいませんでした。
App.config
コンソールアプリでの設定ファイル。
MVCでの appsettings.jsonのかわり
Program.cs
CS_グループマスタを全件検索して表示。
いままではエントリポイントとして、Main()メソッドを使っていたが、わざわざクラスを追加、Main()メソッド作成をしなくても、Progam.csに書くだけで順に処理をしてくれる。
次回は
LINQでいろいろな検索をします。
