12月5日(木)1、2コマ目
今日、やったこと
- [練習問題]ASP.NET Core MVC+LINQ
- [サンプル]EntityFrameworkでDB更新
今日のホワイトボード
[練習問題]ASP.NET Core MVC+LINQ
前回、第2段階まで解説済み。今日は第3段階、第4段階を解説。
第4段階完成版をあげておきます。
appsettings.json
前回と同じ。
Program.cs
前回と同じ。
[モデル]Area.cs
引数でプロパティを初期化するコンストラクタを追加。
[モデル]WeatherData.cs
前回と同じ。
[モデル]WeatherViewModel.cs
コントローラからビューにデータを渡す際に利用。第4段階の検索結果、エラーメッセージを格納するプロパティを追加。
[モデル]AreaDays.cs
第4段階の検索結果(観測地ごとの検索条件に一致する日数を格納)を格納。
SearchDbContext.cs
前回と同じ。
[コントローラ] WeatherController.cs
第3段階、第4段階の検索を行うメソッドを追加。
Index()からこれらのメソッドを呼び出し。
[ビュー]Index.cshtml
第3段階、第4段階の検索を実行するためのボタンおよび検索結果の表示を追加。
[サンプル]EntityFrameworkでDB更新
ORマッピングツールのEntity Frameworkを使って、プログラム中にSQLを書かずにDBを更新。
更新は
①DbContextクラスの各テーブルのデータを保持するプロパティを変更
②DbContextクラスのSaveChanges()を呼び出し
と、これだけで更新ができる。
作成した画面
データ入力用テキストボックスや選択用の選択リストが商品毎にある。
これらすべてをコントローラのメソッドの引数として受け取るにはあまりにも量が多いため、現実的ではない。
そこでフォーム入力データ取得用プロパティ Request.Form[] で取得する。
また、取得する際に必要な名前(name属性値)に商品IDを含めて入力・選択値を取得しやすくしている。
|
| 図 更新、変更、登録用画面 |
ポイントになるソースコードを紹介。
ItemDbContext.cs
DBアクセスを担当。更新のために今までと変わることはない。
ItemContoller.cs
Request.Form[]にname属性値を指定して入力・選択値を取得。
DbContextクラスの各プロパティの更新内容がSaveChanges()メソッド実行でDBに反映される。
次回は
新規登録をやります。
評価用課題を作ってもらいます。
