作者: 里克·安德森
注释
本教程的更新版本可在 此处 找到,并使用了最新版本的 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 文件。
查找<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 类,该类可用于显示电影数据并允许用户创建新的电影列表。