查看原文 本文我們來學習 Code first 在初始化資料庫時是如何決定資料庫名稱和伺服器的。 下圖展示了資料庫初始化的工作流。 由圖可知,上下文類的基本構造函數的參數可以有以下幾種方式: 1、沒有參數 2、有資料庫名 3、有連接字元串名 一、沒有參數(No Parameter) 如果上下文類的基 ...
本文我們來學習 Code first 在初始化資料庫時是如何決定資料庫名稱和伺服器的。
下圖展示了資料庫初始化的工作流。
由圖可知,上下文類的基本構造函數的參數可以有以下幾種方式:
1、沒有參數
2、有資料庫名
3、有連接字元串名
一、沒有參數(No Parameter)
如果上下文類的基本構造函數中沒有指定參數,則根據 {Namespace}.{Context class name} 生成資料庫。如下代碼,生成名為 SchoolDataLayer.Context 的資料庫。
namespace SchoolDataLayer { public class Context: DbContext { public Context(): base() { } } }
二、資料庫名(Database Name)
可在上下文類的基本構造函數中指定資料庫名,如下代碼,生成名為 MySchoolDB 的資料庫。
namespace SchoolDataLayer { public class Context: DbContext { public Context(): base("MySchoolDB") { } } }
三、字元串名(ConnectionString Name)
也可以在 app.config 或者 web.config 中指定連接字元串,然後在上下文類的基本構造函數中通過以 "name=" 開頭指定連接字元串名。這樣我們就生成了一個名為 SchoolDB-ByConnectionString 的資料庫,或者是使用已存在的 SchoolDB-ByConnectionString 資料庫。確保連接字元串中包含 providerName = "System.Data.SqlClient"。
namespace SchoolDataLayer { public class Context: DbContext { public SchoolDBContext() : base("name=SchoolDBConnectionString") { } } }
App.config:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <connectionStrings> <add name="SchoolDBConnectionString" connectionString="Data Source=.;Initial Catalog=SchoolDB-ByConnectionString;Integrated Security=true" providerName="System.Data.SqlClient"/> </connectionStrings> </configuration>