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

作者 :Rick Anderson

注意

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

本教程介绍具有控制器和视图的 ASP.NET Core MVC。 Razor Pages 是 ASP.NET Core 中的一种新替代方法,它是一种基于页面的编程模型,可简化 Web UI 的生成过程并提高效率。 建议先尝试 Razor 页面教程,再使用 MVC 版本。 Razor 页面教程:

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

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

创建的 MovieDBContext 类处理连接到数据库以及将对象映射到 Movie 数据库记录的任务。 不过,你可能会问的一个问题是如何指定它将连接到哪个数据库。 实际上不必指定要使用的数据库,实体框架默认使用 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 一起安装。

默认情况下,实体框架查找一个名为 的连接字符串,该字符串与此项目) 的对象上下文类 (MovieDBContext 相同。 有关详细信息,请参阅 SQL Server ASP.NET Web 应用程序的连接字符串

打开如下所示的应用程序根 Web.config 文件。 (不是 Views 文件夹中的Web.config文件。)

显示“解决方案资源管理器”窗口和“Web 点配置”已选中并用红色圆圈的屏幕截图。

<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 将在 users 目录中创建一个 LocalDB 数据库,该数据库具有 DbContext 类的完全限定名称 (在本例 MvcMovie.Models.MovieDBContext 中) 。 只要数据库具有 ,就可以为数据库命名任何所需的名称 。MDF 后缀。 例如,可以将数据库命名为 MyFilms.mdf

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