码迷,mamicode.com
首页 > 数据库 > 详细

EntityFramework Code-First 简易教程(三)-------数据库初始化

时间:2016-05-13 20:48:31      阅读:256      评论:0      收藏:0      [点我收藏+]

标签:

现在我们来学习,当数据库初始化的时候,Code First怎样设置数据库的名字。

下面的图显示了数据库初始化的工作流程,根据传入给context基类的构造函数的参数来初始化:

技术分享

根据上面的图,context基类的构造函数可以传入如下参数:

  1. 无参数
  2. 参数为数据库名称
  3. 参数为连接字符串

 

无参数的构造函数:

如果不传参数给context基类的构造函数,它就会在我们本地创建一个以{命名空间}.{Context类名}为名字的数据库。比如下面代码会创建一个名字为SchoolDataLayer.Context的数据库

namespace SchoolDataLayer
{
    public class Context: DbContext 
    {
        public Context(): base()
        {
            
        }
    }
}

 

传入数据库名称的构造函数:

我们也可以指定一个数据库名称作为参数传入给context的构造函数,这样在本地就会给我们创建一个以传入参数为名称的数据库。如下面的代码,会创建一个名称为MySchoolDB的数据库

namespace SchoolDataLayer
{
    public class Context: DbContext 
    {
        public Context(): base("MySchoolDB") 
        {
                   
        }
    }
}

 

传入连接字符串的构造函数:

我们在app.config或web.config里定义了连接字符串之后,就也可以用“name=”+连接字符串 这种格式作为参数传给context的构造函数。如下面的代码,我们传入了name=SchoolDBConnectionString给context的构造函数

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>

在上面的context类里,我们把连接字符串传入它的构造函数,请注意,连接字符串名必须以“name=”开头,否则,Code-First会把它当做数据库名。因为在app.config里的连接字符串的数据库名称是SchoolDB-ByConnectionString,所以Code-First会创建一个以SchoolDB-ByConnectionString命名的数据库或者使用已存在的同名数据库。对了,还要确保app.config里的连接字符串包含providerName = "System.Data.SqlClient"属性。

 

总结:Code-First使用传入给基类构造函数的不同参数来初始化数据库。

 

EntityFramework Code-First 简易教程(三)-------数据库初始化

标签:

原文地址:http://www.cnblogs.com/tang-tang/p/5490946.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!