山田さんのASP.NET MVC連載2回目が@ITに掲載
スキャフォールディング機能を利用したアプリ作成方法解説の回ですね。
実際試した人は分かるでしょうけど、これを作るの結構簡単にできます。
P4の引き数パラメタとして設定したモデルはUpdateModel/TryUpdateModelメソッドを実行した状態になっているので、Create部分はシンプルで分かり易いですねー。こんなので追加出来ちゃうの?って感じすらするかも。
入力検証については次回以降との事なのでASP.NET MVCの検証に興味がある方は次回を楽しみに。と言ったところでしょうか。
なんとなーく気になった点が幾つか。
普通にLINQ書いて、全部それでIndex/Detail/Create/Edit書いちゃってれば良いんですが、山田さんの記事ではCreateの部分だけちょっと便利な方法を使ってます。それについての捕捉かな。
- AddToBookメソッドって全部のエンティティで共通?
ここでは、自動バインドされたBookオブジェクトをAddToBookメソッドでコンテキスト・オブジェクトに追加したうえで、SaveChangesメソッドによりデータベースに反映している。
EDMを使った場合、エンティティとして定義されたテーブルに対してAddToメソッドが利用できるようになります。*1
なので、AddToXXXメソッドを使えば、コンテキストオブジェクトに追加できます。
- Index部分でもエンティティを活用できる。
上記のAddToXXXメソッドと若干関係ある部分なんですが、EDMの機能で"コンテキスト・オブジェクト.エンティティセット.ToList()"と書いてあげるとIndex部分全部引っ張って来れます。
LINQでも一行なんであんまり意味無い部分ですができるという意味で。
↓記事から抜粋
public ActionResult Index() { // Bookテーブルからすべてのレコードを取得 var books = from b in _db.Book select b; // 取得したオブジェクト(リスト)をビュー(Index.aspx)に引き渡す return View(books); }
↓もう一つの記述方法
public ActionResult Index() { // Bookテーブルからすべてのレコードを取得してビュー(Index.aspx)に引き渡す // もしかしたらBookセットとかかも。 return View(_db.Book.ToList()); }
ダイレクトにViewに書けるのでシンプルという意味ではこっちのが良いかも?程度です。
連載:ASP.NET MVC入門:第2回 スキャフォールディング機能で軽々DB連携アプリケーション (1/5) - @IT