共用方式為


建立連接字串以及使用 SQL Server LocalDB

作者:Rick Anderson

注意

本教學課程的更新版本可在此取得,它使用最新版的 Visual Studio。 新的教學課程會使用 ASP.NET Core MVC,它在本教學課程提供多種改良。

本教學課程可讓您了解 ASP.NET Core MVC 與控制器和檢視。 Razor 頁面是 ASP.NET Core 中的新替代方案,它是以頁面為基礎的程式設計模型,可讓 Web UI 的建立更容易且更有效率。 建議您在嘗試使用 MVC 版本之前,先試試 Razor 頁面教學課程。 Razor 頁面教學課程:

  • 比較容易學習。
  • 涵蓋更多功能。
  • 是開發新應用程式的建議方法。

建立連接字串以及使用 SQL Server LocalDB

您建立的 MovieDBContext 類別會負責連線到資料庫以及將 Movie 物件對應到資料庫記錄。 不過,您可能會遇到的問題是如何指定它要連線的資料庫。 您實際上不需要指定要使用的資料庫,因為 Entity Framework 預設會使用 LocalDB。 在本節,我們會在應用程式的 Web.config 檔案明確新增連接字串。

SQL Server Express LocalDB

LocalDB 是 SQL Server Express 資料庫引擎的輕量化版本,可依需求啟動,並在使用者模式中執行。 LocalDB 會以 SQL Server Express 的特殊執行模式來執行,讓您將資料庫當作 .mdf 檔案來使用。 一般而言,LocalDB 資料庫檔案會保留在 Web 專案的 App_Data 資料夾。

我們不建議在生產 Web 應用程式使用 SQL Server Express。 LocalDB 尤其不應用於 Web 應用程式的生產環境,因為它不是設計來搭配 IIS。 不過,LocalDB 資料庫可以輕鬆地移轉至 SQL Server 或 SQL Azure。

在 Visual Studio 2017中,LocalDB 預設會隨 Visual Studio 一起安裝。

根據預設,Entity Framework 會尋找與物件內容類別有相同名稱的連接字串 (在此專案是 MovieDBContext)。 如需詳細資訊,請參閱 ASP.NET Web 應用程式的 SQL Server 連接字串

開啟如下所示的應用程式根目錄 Web.config 檔案。 (並非 Views 資料夾的 Web.config 檔案。)

螢幕擷取畫面所示為方案總管視窗,其中 Web.config 已選取並以紅色圈選。

尋找 <connectionStrings> 元素:

螢幕擷取畫面所示為程式碼,其中的連接字串元素以紅色圈選。

將下列連接字串新增至 Web.config 檔案中的 <connectionStrings> 元素。

<add name="MovieDBContext" 
   connectionString="Data Source=(LocalDb)\MSSQLLocalDB;Initial Catalog=aspnet-MvcMovie;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\Movies.mdf" 
   providerName="System.Data.SqlClient" 
/>

下列範例所示為 Web.config 檔案的一部分,其中已新增連接字串:

<connectionStrings>
  <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;Initial Catalog=aspnet-MvcMovie-fefdc1f0-bd81-4ce9-b712-93a062e01031;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-MvcMovie-fefdc1f0-bd81-4ce9-b712-93a062e01031.mdf" providerName="System.Data.SqlClient" />
  <add name="MovieDBContext" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;Initial Catalog=aspnet-MvcMovie;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\Movies.mdf" providerName="System.Data.SqlClient" />
</connectionStrings>

這兩個連接字串非常相似。 第一個連接字串名為 DefaultConnection,且在成員資格資料庫中用於控制可存取應用程式的成員。 您新增的連接字串會指定位於 App_Data 資料夾中名為Movie.mdf 的 LocalDB 資料庫。 在本教學課程中,我們不會使用成員資格資料庫,如需詳細了解成員資格、驗證和安全性,請參閱我的教學課程使用驗證和 SQL DB 建立 ASP.NET MVC 應用程式,並部署至 Azure App Service

連接字串的名稱必須符合 DbContext 類別的名稱。

using System;
using System.Data.Entity;

namespace MvcMovie.Models
{
    public class Movie
    {
        public int ID { get; set; }
        public string Title { get; set; }
        public DateTime ReleaseDate { get; set; }
        public string Genre { get; set; }
        public decimal Price { get; set; }
    }

    public class MovieDBContext : DbContext
    {
        public DbSet<Movie> Movies { get; set; }
    }
}

您實際上不需新增 MovieDBContext 連接字串。 如果您未指定連接字串,Entity Framework 會在使用者目錄建立 LocalDB 資料庫,並使用完全符合資格的 DbContext 類別名稱 (在此例中為 MvcMovie.Models.MovieDBContext)。 只要資料庫有 MDF 後綴,您就可以將資料庫命名為任何名稱。 舉例來說,我們可以將資料庫命名為 MyFilms.mdf

接下來,您可建立新的 MoviesController 類別來顯示電影資料,並允許使用者建立新的電影清單。