首 页  -  技术分享  - LearnMVC5-Create a Connection String and Working With SQL Server LocalDB

LearnMVC5-Create a Connection String and Working With SQL Server LocalDB

分享者:董昌顺     2016-04-07

LocalDB

上文中你创建的MovieDBContext类负责连接数据库并映射数据库中的电影信息记录到Movie对象中。那么你可能就会问:“如何指定整个项目所连接的数据库?”。事实上你不用明确的指定使用哪一个数据库。EntityFrameword会默认使用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中。

在 VisualStudio2013(2012)中LocalDb会默认被安装。

默认情况下Entity Framework会查找和当前上下文对象类名相同的连接字符串名。(本项目中是MovieDBContext)。

打开应用程序的根目录文件Web.Config,而不是Views文件夹下的Web.config文件

 

找到<connextionString>元素

 

添加下面连接字符串到<connectionStrings>元素中。

<add name="MovieDBContext" 
connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Movies.mdf;Integrated Security=True"
providerName="System.Data.SqlClient" />

下面代码显示了Web.config添加连接字符串后<connectionStrings>的示例

<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的连接字符串连接到控制应用程序访问的成员资格数据库。我们添加的连接字符串指向App_Data文件夹中一个名为Movie.mdf的LocalDb数据库。本文中我们不使用成员资格数据库。

数据库连接字符串的名字必须的继承自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会在用户目录中创建一个LocalDb数据库的DBContext类。你可以给数据库命名任何你想要的的名字。

下一篇文章中我们将创建一个新的MoviesController类用来显示电影数据,并运行用户穿件新的电影列表