创建连接字符串并使用 SQL Server LocalDB

作者: 里克·安德森

注释

本教程的更新版本可在 此处 找到,并使用了最新版本的 Visual Studio。 新教程使用 ASP.NET Core MVC,这为本教程提供了 许多 改进。

本教程讲解了使用控制器和视图的 ASP.NET Core MVC。 Razor Pages 是 ASP.NET Core 中的一种新替代方法,它是一种基于页面的编程模型,使生成 Web UI 更加轻松高效。 建议在 MVC 版本之前试用 Razor Pages 教程。 Razor Pages 教程:

  • 更易于遵循。
  • 涵盖更多功能。
  • 是新应用开发的首选方法。

创建连接字符串并使用 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>元素:

显示代码和连接字符串元素的屏幕截图以红色圆圈。

将以下连接字符串添加到 <connectionStrings> Web.config 文件中的元素。

<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 应用服务

连接字符串的名称必须与 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 将在用户目录中使用 DbContext 类的完全限定名称(在本例中) MvcMovie.Models.MovieDBContext创建 LocalDB 数据库。 您可以为数据库命名为任何您喜欢的名称,只要它带有 .MDF 后缀。 例如,我们可以将数据库命名 为MyFilms.mdf

接下来,你将生成一个新 MoviesController 类,该类可用于显示电影数据并允许用户创建新的电影列表。