データモデルの受け渡し
ここでは、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 NamespaceBookクラスの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 Namespacedb.Books.ToList()は、Booksテーブルのすべてのレコードを、IEnumerable(Of Book)型として取得している。IEnumerableとはなんぞやというと、自分の理解では、Foreach文で、レコードの全フィールドにアクセスできるようにした型。普通の配列だと、For文で各レコードにアクセスできても、Foreach文でフィールド単位のアクセスはできない。
今回はここまで。次は、上記コントローラがレコードを渡す先であるビュースクリプトの記述をしていきます。実はここでドはまりしていたのですが、いつか分かる日もこようということで先に進むことにしました。その日のために、疑問点は書き留めておくつもりです。