Mvc-framework-models

提供:Dev Guides
移動先:案内検索

MVCフレームワーク-モデル

コンポーネント「モデル」は、アプリケーションのデータを管理します。 ビューからの要求に応答し、コントローラーからの指示にも応答して、それ自体を更新します。

モデルクラスは、手動で作成するか、データベースエンティティから生成できます。 これからの章では、モデルを手動で作成するための多くの例を見ていきます。 したがって、この章では、他のオプション、つまり データベースから生成することにより、両方の方法を実際に体験できます。

データベースエンティティを作成する

SQL Serverに接続し、新しいデータベースを作成します。

SQLサーバーの接続

次のクエリを実行して、新しいテーブルを作成します。

CREATE TABLE [dbo].[Student](
   [StudentID]      INT           IDENTITY (1,1) NOT NULL,
   [LastName]       NVARCHAR (50) NULL,
   [FirstName]      NVARCHAR (50) NULL,
   [EnrollmentDate] DATETIME      NULL,
   PRIMARY KEY CLUSTERED ([StudentID] ASC)
)

CREATE TABLE [dbo].[Course](
   [CourseID] INT           IDENTITY (1,1) NOT NULL,
   [Title]    NVARCHAR (50) NULL,
   [Credits]  INT           NULL,
   PRIMARY KEY CLUSTERED ([CourseID] ASC)
)

CREATE TABLE [dbo].[Enrollment](
   [EnrollmentID] INT IDENTITY (1,1) NOT NULL,
   [Grade]        DECIMAL(3,2) NULL,
   [CourseID]     INT NOT NULL,
   [StudentID]    INT NOT NULL,
   PRIMARY KEY CLUSTERED ([EnrollmentID] ASC),
      CONSTRAINT [FK_dbo.Enrollment_dbo.Course_CourseID] FOREIGN KEY ([CourseID])
   REFERENCES [dbo].[Course]([CourseID]) ON DELETE CASCADE,
      CONSTRAINT [FK_dbo.Enrollment_dbo.Student_StudentID] FOREIGN KEY ([StudentID])
   REFERENCES [dbo].[Student]([StudentID]) ON DELETE CASCADE
)

データベースエンティティを使用してモデルを生成する

データベースを作成してテーブルを設定したら、先に進み、新しいMVC Empty Applicationを作成できます。 プロジェクトのModelsフォルダーを右クリックし、[追加]→[新しいアイテム]を選択します。 次に、ADO.NET Entity Data Modelを選択します。

新しいモデルの追加ステップ1

Add New Model Step 2

次のウィザードで、「データベースから生成」を選択して「次へ」をクリックします。 SQLデータベースへの接続を設定します。

新しいモデルテスト接続の追加

データベースを選択し、「接続のテスト」をクリックします。 次のような画面が表示されます。 Nextをクリックしてください。

新しいモデルのテスト接続の追加ステップ2

テーブル、ビュー、ストアドプロシージャおよび関数を選択します。 完了をクリックします。 次のスクリーンショットに示すように作成されたモデルビューが表示されます。

新しいMVCモデル

上記の操作により、すべてのデータベースエンティティのモデルファイルが自動的に作成されます。 たとえば、作成したStudentテーブルは、次のコードを含むモデルファイルStudent.csになります-

namespace MvcModelExample.Models {
   using System;
   using System.Collections.Generic;

   public partial class Student {

      public Student() {
         this.Enrollments = new HashSet();
      }

      public int StudentID { get; set; }
      public string LastName { get; set; }
      public string FirstName { get; set; }
      public Nullable EnrollmentDate { get; set; }
      public virtual ICollection Enrollments { get; set; }
   }
}