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

现在我们来学习,当数据库初始化的时候,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使用传入给基类构造函数的不同参数来初始化数据库。

时间: 2024-10-18 01:49:08

EntityFramework Code-First 简易教程(三)-------数据库初始化的相关文章

七色花基本权限系统(6)- 让EntityFramework Code First自动合并/迁移/数据初始化

在前一章节里,我们已经能够对映射字段进行配置了.但在演示中,我们通过删除原数据库让EF重新创建的方式,才把新的字段信息更新(其实是破而后立)到了数据库.这显然无法让人接受.在这篇日志里,将演示"在实体类发生改变时如何自动更新数据库中的表结构"和"在EF创建数据库的时候如何初始化一批数据". 合并/迁移 合并是指"新的实体模型映射到数据库中,更新其结构",例如: 新增了实体类,那在数据库中就是新增数据表. 删除了实体类,那在数据库中就是删除数据表.

WebGL简易教程(四):颜色

目录 1. 概述 2. 示例:绘制三角形 1) 数据的组织 2) varying变量 3. 结果 4. 理解 1) 图形装配和光栅化 2) 内插过程 5. 参考 1. 概述 在上一篇教程<WebGL简易教程(三):绘制一个三角形(缓冲区对象)>中,通过使用缓冲区对象(buffer object)来向顶点着色器传送数据.那么,如果这些数据(与顶点相关的数据,如法向量.颜色等)需要继续传送到片元着色器该怎么办呢? 例如这里给三角形的每个顶点赋予不同的颜色,绘制一个彩色的三角形.这个时候就需要用到之

EntityFramework Code-First 简易教程(二)-------Code First约定

Code First 约定 在前一篇中,我们已经知道了EF Code-First怎样从模型类(domain classes)中创建数据库表,下面,我们开始学习默认的Code-First约定. 什么是约定? 约定就是在Code-First模式中自动配置模型类的默认规则,Code-First约定定义在System.Data.Entity.ModelConfiguration.Conventions 命名空间 让我们来看看各种约定的概述 类型发现(Type Discovery): 在前一篇中,我们创建

EF6.0+APS.NET MVC5.0项目初探三(code first实体映射到数据库)

到这里架构就搭建完了,该向里面填充东西的时候了,如上篇:EF6.0+APS.NET MVC5.0项目初探二(类库引用关系及说明) 第一步 :在需要添加EF的类库Domain.DbContext上右击->管理NuGet程序包->找到Entity FrameWork下载安装. 如图: 第二步:新建DbContext 第三步:在类库Domain.Entity上添加引用System.ComponentModel.DataAnnotations(用于验证的引用) 并新建实体类. 1 using Syst

三步解决EntityFramework Code First中的MissingMethodException错误

在数据库初始化时运行OnModelCreating的方法中,有时会抛出MissingMethodException异常. 以下三步可解决大部份的出错场景: 在程序包管理器控制台中运行:Uninstall-Package EntityFramework 在packages文件夹中删除 EntityFramework 文件夹 在程序包管理器控制台中运行:Install-Package EntityFramework 本人的环境为VS2015社区版,.net framework 4.5,EntityF

Android实战简易教程-第三十九枪(第三方短信验证平台Mob和验证码自动填入功能结合实例)

用户注册或者找回密码时一般会用到短信验证功能,这里我们使用第三方的短信平台进行验证实例. 我们用到第三方短信验证平台是Mob,地址为:http://mob.com/ 一.注册用户.获取SDK 大家可以自行注册,得到APPKEY和APPSECRET,然后下载SDK,包的导入方式如截图: 二.主要代码 SMSSendForRegisterActivity.java:(获取验证码页) package com.qiandaobao.activity; import java.util.regex.Mat

DB Initialization(数据库初始化)[EF Code-First系列]

前面的例子中,我们已经看到了Code-First自动为我们创建数据库的例子. 这里我们将要学习的是,当初始化的时候,Code-First是怎么决定数据库的名字和服务的呢??? 下面的图,解释了这一切!!! 这个图解释了,数据库初始化的流程,是基于我们在上下文类中的构造函数中传递的参数. 在上面的图中,context类中的base构造器中,可以填入下面的参数: 无参数(No Parameter) 数据库的名字(Database Name) 连接字符串的名字(Connection String Na

文件上传利器SWFUpload入门简易教程

凡做过网站开发的都应该知道表单file的确鸡肋. Ajax解决了不刷新页面提交表单,但是却没有解决文件上传不刷新页面,当然也有其它技术让不刷新页面而提交文件,该技术主要是利用隐藏的iFrame, 较Ajax要麻烦许多,而且其提交方式依然在底层是使用的表单file,这里我们不详谈.而且如果是提交较小的文件,我们能接受,如果提交的文件较大,我 们便要忍受很长的等待时间,而浏览器却没有任何提示,我们也没有办法知道文件上传的进度… 但是现在,网上出现了一个名为SWFUpload的上传组件,该组件利用Fl

EF Code First学习笔记:数据库创建

控制数据库的位置 默认情况下,数据库是创建在localhost\SQLEXPRESS服务器上,并且默认的数据库名为命名空间+context类名,例如我们前面的BreakAway.BreakAwayContext. 有几种方法可以改变这种默认约定. 利用配置文件 在配置文件中新加一个连接字符串 <connectionStrings> <add name="BreakAwayContext" providerName="System.Data.SqlClient