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列表了。