创建连接字符串(Connection String)并使用SQL Server LocalDB
最后更新于:2022-04-01 16:29:17
您创建的MovieDBContext类负责处理连接到数据库,并将Movie对象映射到数据库记录的任务中。你可能会问一个问题,如何指定它将连接到数据库? 实际上,确实没有指定要使用的数据库,Entity Framework将预设值使用的[LocalDB](http://msdn.microsoft.com/en-us/library/hh510202.aspx)。 在本节中,我们将显式地在Web.config文件中,添加应用程序的连接字符串(connection string)。
# SQL Server Express LocalDB
[LocalDB](http://blogs.msdn.com/b/sqlexpress/archive/2011/07/12/introducing-localdb-a-better-sql-express.aspx)的是一个SQL Server Express轻量级版本的数据库引擎。 它在用户模式下启动、执行。[LocalDB](http://blogs.msdn.com/b/sqlexpress/archive/2011/07/12/introducing-localdb-a-better-sql-express.aspx)的运行在一个特殊的SQL Server Express的执行模式,所以允许您使用MDF文件数据库。通常情况下,[LocalDB](http://blogs.msdn.com/b/sqlexpress/archive/2011/07/12/introducing-localdb-a-better-sql-express.aspx)的数据库文件都保存在web项目的App_Data文件夹下面。
**注意:**在生产环境的Web应用程序中,我们不推荐您使用SQL Server Express。 尤其, [LocalDB](http://blogs.msdn.com/b/sqlexpress/archive/2011/07/12/introducing-localdb-a-better-sql-express.aspx)不应该被用于Web应用程序的生产环境,因为它设计之初不要求使用**IIS**。 然而,[LocalDB](http://blogs.msdn.com/b/sqlexpress/archive/2011/07/12/introducing-localdb-a-better-sql-express.aspx)的数据库能够很容易地迁移到SQL Server或SQL Azure中。
**备注:**在 Visual Studio 2013 (Visual Studio 2012), [LocalDB](http://blogs.msdn.com/b/sqlexpress/archive/2011/07/12/introducing-localdb-a-better-sql-express.aspx) 默认会被安装.
默认的,Entity Framework的看起来命名为为对象上下文类(如本项目MovieDBContext)的相同的一个连接字符串。有关详细信息,请参见[SQL Server Connection Strings for ASP.NET Web Applications](http://msdn.microsoft.com/en-us/library/jj653752.aspx)。
打开应用程序根目录的*Web.config*文件。(不是*View*文件夹下的*Web.config*文件。)打开红色高亮标记的*Web.config*文件。
[![clip_image002](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-01-02_568736b56ae83.gif "clip_image002")](http://images.cnitblog.com/blog/139239/201401/101142299739.gif)
找到 <connectionStrings> :
[![clip_image004](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-01-02_568736b57b1c6.gif "clip_image004")](http://images.cnitblog.com/blog/139239/201401/101142314571.gif)
在*Web.config*文件中的`<connectionStrings>`内添加下面的连接字符串。
~~~
<add name="MovieDBContext"
connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Movies.mdf;Integrated Security=True"
providerName="System.Data.SqlClient"
/>
~~~
下面的例子里显示了部分*Web.config*文件中所新添加的连接字符串:
~~~
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-MvcMovie-20130603030321.mdf;Initial Catalog=aspnet-MvcMovie-20130603030321;Integrated Security=True" providerName="System.Data.SqlClient" />
<add name="MovieDBContext" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Movies.mdf;Integrated Security=True" providerName="System.Data.SqlClient"
/>
~~~
这两个连接字符串非常相似。第一个连接字符串命名为DefaultConnection的,被用于控制可以访问应用程序的成员鉴权数据库。您已添加的连接字符串 (connection string) 显示位于App_Data文件夹中的 一个Movie.mdf文件,数据库命名为*Movie.mdf*。 在本教程中,我们将不使用会员数据库有关会员,认证和安全性的更多信息,请参阅教程:[Deploy a Secure ASP.NET MVC app with Membership, OAuth, and SQL Database to a Windows Azure Web Site](http://www.windowsazure.com/en-us/develop/net/tutorials/web-site-with-sql-database/)。
连接字符串(connection string)的名称必须匹配[DbContext](http://msdn.microsoft.com/en-us/library/system.data.entity.dbcontext(v=vs.103).aspx)类的名称。
~~~
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](http://msdn.microsoft.com/en-us/library/system.data.entity.dbcontext(v=vs.103).aspx)类的(如本例中MvcMovie.Models.MovieDBContext)。您也数据库命名为任何你喜欢的东西,只要它具有*.MDF*的后缀。例如,我们可以命名数据库*MyFilms.mdf*。
接下来,您将创建一个新的MoviesController类,您可以用它来展示电影数据,并允许用户创建新的影片列表。