【CodeFirst 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>
原文地址:https://www.cnblogs.com/ztpark/p/6829642.html