五、 创建连接串连接本地数据库(ASP.NET MVC5 系列)

1. 创建连接串连接本地SQLServer数据库

上节讲到MovieDBContext类,这个类的作用是连接数据库并将Movie对象迁移到数据库记录中。不过你会问一个问题:如何知道这个对象将连接哪个数据库呢?事实是你并没有指定所用的数据库,EF框架将默认使用本地数据库(LoaclDB).在这一章节中我们将给这个应用程序的web.config文件中添加一个连接字符串。

2. SQL Server自带的Express版的LocalDB

LocalDB是在需求启动并运行在用户模式下的一个轻量级版本的SQL Server Express数据库引擎。LocalDB运行在能够使你用.mdf为后缀的数据库文件工作的SQL Server Express的特别的执行模式。通常情况下,LocalDB的数据库文件在Web项目的App_Data文件夹下。

SQL Server Express在真实的Web应用程序开发过程中并不推荐使用。LocalDB的流行并不是因为其在Web应用程序开发的使用,而是因为它的工作设计不依赖于IIS。此外,LocalDB数据库也很容易的迁移到SQL Server或者SQL Azure上。

在VS2013(和VS2012)中,LocalDB是默认安装到Visual Studio中的。

在默认的情况下,EF框架将查找一个与context类(此例是MovieDBContext)同名的连接字符串。想了解更多的信息,请查看ASP.NET应用程序的SQL Server连接串

打开这个应用程序末尾的Web.config文件(注意:不是Views文件下的Web.config),如下所示:

找到这个<connectionStrings>元素:

Web.config文件中添加下面的连接字符串到<connectionStrings>元素中.

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

下面的例子中显示了部分Web.config文件中新添加的连接字符串:

1 <connectionStrings>
2     <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" />
3     <add name="MovieDBContext"    connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Movies.mdf;Integrated Security=True" providerName="System.Data.SqlClient"
4 />


这两个连接字符串非常相似。第一个连接串叫做DefaultConnection被用于成员数据库,用来控制合法用户进入该应用程序。新添加的连接串在App_Data文件夹下指定了一个命叫Movie.mdf的LocalDB数据库。在这本教程中我们并没有使用成员数据库,想了解更多关心成员,授权和安全性的信息,请查询Deploy a Secure ASP.NET MVC app with Membership, OAuth, and SQL Database to a  Windows Azure Web Site

注意:连接串的名字必须和DbContext类的名字相匹配。

 1 using System;
 2 using System.Data.Entity;
 3 
 4 namespace MvcMovie.Models
 5 {
 6     public class Movie
 7     {
 8         public int ID { get; set; }
 9         public string Title { get; set; }
10         public DateTime ReleaseDate { get; set; }
11         public string Genre { get; set; }
12         public decimal Price { get; set; }
13     }
14 
15     public class MovieDBContext : DbContext
16     {
17         public DbSet<Movie> Movies { get; set; }
18     }
19 }

实际上你没有添加MovieDBContext的连接串。如果你没有指定一个连接串,EF框架将在用户的直接目录用DbContex类的全名(此例是MvcMovie.Models.MOvieDBContext)创建一个LocalDB数据库。当然你可以命名任何你喜欢的数据库名,前提是数据库名字的后缀是.MDF.例如:我们可以命名数据库为MyFilms.mdf.

接下来,你可以编译这个MoviesController类了,用来显示新的 movie数据和让你创建新的movie列表了。

六、 从Controller中访问模板数据(ASP.NET MVC5 系列)

posted @ 2014-02-26 16:05  东方不败00  阅读(9134)  评论(0编辑  收藏  举报