共用方式為


教學課程:透過 MVC 5 開始使用 EF Database First

您可以使用 MVC、Entity Framework 和 ASP.NET Scaffolding 來建立 Web 應用程式,藉此為現有資料庫提供介面。 本教學課程系列說明如何自動產生程式碼,讓使用者能夠顯示、編輯、建立和刪除資料庫表格中的資料。 產生的程式碼會對應至資料庫表格中的欄。 在本系列的最後一個部分,您將瞭解如何將資料煮解新增到資料模型,藉此指定驗證需求並顯示格式設定。 完成後,您可以前往 Azure 文章,瞭解如何將 .NET 應用程式和 SQL 資料庫部署至 Azure App Service。

本教學課程說明如何從現有的資料庫開始操作,快速建立 Web 應用程式,讓使用者與資料互動。 它使用 Entity Framework 6 和 MVC 5 來建立 Web 應用程式。 ASP.NET Scaffolding 功能可讓您自動產生程式碼來顯示、更新、建立和刪除資料。 使用 Visual Studio 內部的發布工具,您可以輕鬆在 Azure 部署網站和資料庫。

本系列的此部分會重點說明如何建立資料庫並填入資料。

本系列是與 Tom Dykstra 和 Rick Anderson 合作撰寫。 內容已根據留言區的使用者意見反應而改善。

在本教學課程中,您已:

  • 設定資料庫

必要條件

Visual Studio 2017

設定資料庫

若要模擬具有現有資料庫的環境,您必須先建立包含預先填入資料的資料庫,然後建立 Web 應用程式來連線到資料庫。

本教學課程的開發係使用 LocalDB 搭配 Visual Studio 2017。 您可以使用現有資料庫伺服器代替 LocalDB,但視 Visual Studio 版本和資料庫類型而定,可能不是 Visual Studio 的所有資料工具都受支援。 如果您的資料庫無法使用這些工具,您可能需要在資料庫的管理套件中執行某些資料庫的特定步驟。

如果您的 Visual Studio 版本中的資料庫工具有問題,請確定您已安裝最新版的資料庫工具。 如需了解如何更新或安裝資料庫工具,請參閱 Microsoft SQL Server Data Tools

啟動 Visual Studio 並建立 SQL Server 資料庫專案。 將專案命名為 ContosoUniversityData

建立資料庫專案

您現在已有空白的資料庫專案。 若要確定您可以將此資料庫部署至 Azure,請將 Azure SQL Database 設為專案的目標平台。 設定目標平台並非實際部署資料庫,而僅是代表資料庫專案會確認資料庫設計與目標平台相容。 若要設定目標平台,請開啟專案的 [屬性],然後為目標平台選取 [Microsoft Azure SQL Database]

您可以新增 SQL 指令碼來定義表格,藉此建立本教學課程所需的表格。 以滑鼠右鍵按一下專案並新增項目。 選取 [表格和檢視]>[表格],並命名為「Student」

在表格檔案中,將 T-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)
)

請注意,設計視窗會自動與程式碼同步。 您可以使用程式碼或設計工具執行操作。

顯示程式碼和設計

新增其他表格。 這次命名為 Course,並使用下列 T-SQL 命令。

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

然後,再重複一次,藉此建立名為 Enrollment 的表格。

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
)

您可以透過部署資料庫之後才會執行的指令碼將資料填入資料庫。 將部署後指令碼新增到專案中。 以滑鼠右鍵按一下專案並新增項目。 選取 [使用者指令碼]>[部署後指令碼]。 您可以使用預設名稱。

將下列 T-SQL 程式碼新增至部署後指令碼。 找不到相符的記錄時,此指令碼只會將資料新增至資料庫。 它不會覆寫或刪除您可能已輸入資料庫的任何資料。

MERGE INTO Course AS Target 
USING (VALUES 
        (1, 'Economics', 3), 
        (2, 'Literature', 3), 
        (3, 'Chemistry', 4)
) 
AS Source (CourseID, Title, Credits) 
ON Target.CourseID = Source.CourseID 
WHEN NOT MATCHED BY TARGET THEN 
INSERT (Title, Credits) 
VALUES (Title, Credits);

MERGE INTO Student AS Target
USING (VALUES 
        (1, 'Tibbetts', 'Donnie', '2013-09-01'), 
        (2, 'Guzman', 'Liza', '2012-01-13'), 
(3, 'Catlett', 'Phil', '2011-09-03')
)
AS Source (StudentID, LastName, FirstName, EnrollmentDate)
ON Target.StudentID = Source.StudentID
WHEN NOT MATCHED BY TARGET THEN
INSERT (LastName, FirstName, EnrollmentDate)
VALUES (LastName, FirstName, EnrollmentDate);

MERGE INTO Enrollment AS Target
USING (VALUES 
(1, 2.00, 1, 1),
(2, 3.50, 1, 2),
(3, 4.00, 2, 3),
(4, 1.80, 2, 1),
(5, 3.20, 3, 1),
(6, 4.00, 3, 2)
)
AS Source (EnrollmentID, Grade, CourseID, StudentID)
ON Target.EnrollmentID = Source.EnrollmentID
WHEN NOT MATCHED BY TARGET THEN
INSERT (Grade, CourseID, StudentID)
VALUES (Grade, CourseID, StudentID);

請務必注意,部署後指令碼會在您每次部署資料庫專案後執行。 因此,撰寫此指令碼時,您必須仔細考慮您的需求。 某些情況下,您可能會在每次部署專案後,從已知的一組資料重新操作。 其他情況下,您可能不想以任何方式修改現有資料。 根據需求,您可以決定是否需要部署後指令碼,或需要在指令碼中加入任何內容。 如需詳細了解如何以部署後指令碼填入資料庫,請參閱在 SQL Server 資料庫專案加入資料

您現在有 4 個 SQL 指令碼檔案,但沒有實際的表格。 您已可將資料庫專案部署至 localdb。 在 Visual Studio 中,按一下 [開始] 按鈕 (或 F5) 來建立和部署資料庫專案。 檢查 [輸出] 索引標籤,確認組建和部署已成功。

若要查看已建立的新資料庫,請開啟 SQL Server 物件總管,並在正確的本機資料庫伺服器中尋找專案的名稱 (在此案例為 (localdb)\ProjectsV13)。

若要確認表格已填入資料,請以滑鼠右鍵按一下表格,然後選取 [檢視資料]

顯示表格資料

表格資料的可編輯檢視會顯示。 舉例來說,如果您選取 [表格]>[dbo.course]>[檢視資料],您會看到表格中有三個欄 (CourseTitleCredits) 和四個列。

其他資源

如需開發 Code First 的入門範例,請參閱開始使用 ASP.NET MVC 5。 如需更進階的範例,請參閱建立 ASP.NET MVC 4 應用程式的 Entity Framework 資料模型

如需了解如何選取要使用的 Entity Framework 方法,請參閱 Entity Framework 開發方法

下一步

在本教學課程中,您已:

  • 設定資料庫

請前往下一個教學課程,瞭解如何建立 Web 應用程式和資料模型。