创建连接字符串并使用 SQL Server LocalDB
注意
此处使用最新版本的 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文件。)
<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
类,该类可用于显示电影数据,并允许用户创建新的电影列表。