原文地址:http://www.entityframeworktutorial.net/code-first/database-initialization-in-code-first.aspxhtml
EF 6 Code-First系列文章目錄:數據庫
在本系列教程的Code-First示例一節中,咱們已經看到了EF 自動建立數據庫的過程。這一節中,咱們將學習Code-First模式中,初始化數據庫的時候, EF是如何決定建立的數據庫名稱,以及在哪一個服務器上建立數據庫。服務器
下面的圖形,列出來了數據庫初始化的流程,從圖中能夠看出,流程走向是基於咱們傳遞給上下文類【繼承自DbContext類】的參數的。app
就像上圖所示,基於上下文的參數,咱們有下面幾種:ide
先看下沒有參數的狀況吧:函數
若是你在上下文類中,沒有指定任何參數的話,就會在你本地的 SQLEXPRESS 服務器上建立數據庫,數據庫名稱是:{Namespace}.{Context clas Name}.【命名空間.上下文類的名稱】,例以下面的代碼,EF將會建立SchoolDataLayer.Context名稱的數據庫。學習
接着看看 第二種狀況:數據庫名稱測試
你能夠在上下文類調用的base構造函數中,傳入數據庫名稱參數,而後EF就會建立你指定的數據庫名稱的數據庫。例以下面代碼,EF爲咱們建立的是MySchoolDB數據庫。ui
最後看看第三種狀況:數據庫鏈接字符串的名稱吧。spa
你能夠在app.config配置文件中,配置數據庫鏈接字符串,而後把配置文件中鏈接字符串的名稱,傳遞到上下文類的base構造函數中。形式以下:「name=你的鏈接字符串名稱」。下面的代碼,咱們傳遞的是:
在上面的上下文類中,咱們指定了一個鏈接字符串做爲參數。請注意的是,鏈接字符串應該是【name=】開頭,不然就被被認爲是數據庫的名稱,上面配置文件中數據庫是SchoolDB-ByConnectionString。EF就會爲咱們建立這個名稱的數據庫。請注意,你須要確保
providerName = "System.Data.SqlClient" 包含在鏈接字符串中。
好了,這一節就介紹完了,下面一節,將介紹數據庫初始化策略。