2015年3月30日月曜日

2.3 ASP.NET MVC(4)

データモデルの受け渡し

ここでは、Controller/Viewの紐付けに関する部分のみに焦点を当てる。実際にデータベースにアクセスするやり方なんかはまたあとで。
何はともあれ、まずはデータモデルを定義する。
Imports System
Imports System.Data.Entity

Namespace Nikkei.Models
 'Booksテーブルに対応するデータモデル
 Public Class Book
  Public Property Id As Integer
  Public Property Isbn As String
  Public Property Title As String
  Public Property Price As Integer
  Public Property Publish As String
  Public Property Published As DateTime
 End Class
 
 'コンテキストクラス
 Public Class MyDbContext
  Public Property Books As DbSet(Of Book)
 End Class
End Namespace
Bookクラスの1インスタンスが、データベースのレコード1件に相当。レコードの集合がコンテキストクラス。コンテキストクラスMyDbContextは、Bookクラスの集合であるBooksをメンバに持つ。

モデルを受け渡しするコントローラ/ビュースクリプト

コントローラは、このモデルを使ってデータベースにアクセスし、得られたデータをビュースクリプトに渡す。コードは以下のようになる。
Imports System.Data.Entity
Imports System.Linq
Imports System.Net
Imports System.Web.Mvc
Imports Nikkei.Models

Namespace Nikkei.Controllers
 Public Class BooksController Inherits Controller
  Dim db As MyDbContext = New MyDbContext()
  
  Public Function Index() As ActionResult
   return View(db.Books.ToList()) 
   'db.Books.ToList()は、モデルのコンテキストクラス:全レコードを取得して、Viewに渡す。
   'なんでこの分だけで全レコードを取得したことになるのかは、あとで説明がある。
   'ビューへのデータ渡しはこれだけで完了。
  End Function 
 End Class 
End Namespace
db.Books.ToList()は、Booksテーブルのすべてのレコードを、IEnumerable(Of Book)型として取得している。IEnumerableとはなんぞやというと、自分の理解では、Foreach文で、レコードの全フィールドにアクセスできるようにした型。普通の配列だと、For文で各レコードにアクセスできても、Foreach文でフィールド単位のアクセスはできない。

今回はここまで。次は、上記コントローラがレコードを渡す先であるビュースクリプトの記述をしていきます。実はここでドはまりしていたのですが、いつか分かる日もこようということで先に進むことにしました。その日のために、疑問点は書き留めておくつもりです。

0 件のコメント:

コメントを投稿