【Code-First Tutorial】 数据库初始化(Database Initialization)
本文我们来学习 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>