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でいろいろな検索をします。

このブログの人気の投稿

1月19日(月)1コマ目

1月26日(月)1、2コマ目