asp.net mvc CodeFirst模式数据库迁移步骤详解

利用Code First模式构建好基本的类后,项目也开始搭建完毕并成功运行,而且已经将数据库表结构自动生成了。

但是,我有新的类要加入,有字段需要修改,那怎么办呢,删库,跑路 ? 哈哈

利用数据库迁移,将原有结构不改动,将新建类进行单独建表操作,或者是已有数据库表,改变字段,那就修改表。

迁移步骤:

1.打开程序包管理器控制台:工具->NuGet包管理器->程序包管理器控制台.(当然还有其它方式也可以打开,我比较喜欢这种)

点击后将弹出程序包管理器控制台

极其要注意的是默认项目!!!

2.启动数据库迁移,执行命令:enable-migrations

由于Models不一定就是直接利用项目中已有的文件夹Models,从而当你选中启动项目为asp.net mvc 框架类型时,此处将会报错

具体来看我当前项目的分布情况:

我将模型分离出来了,以至于当我默认选中SearchEngine为启动项目时,在程序包管理器控制台中输入的第一个命令就会报错

解决方案:选中默认项目,选择为DbContext所在的项目,此处我的是类库

成功操作会如下提示:

并且在DbContext同级目录下增加了migrations目录

3.开始数据库迁移命令

1.Add-migration [自定义版本名称]

  输入add-migrationupdateorderheader

2.update-database

  输入update-database

此处如果和我一样将DbContext单独分割出来的需要注意,需要在当前类库的配置文件中加上数据库的连接地址

如果是直接在asp.net mvc框架中的Models中加入的DbContext,则可不必,会直接读取Web.Config文件中的连接字符串

等待命令执行中......

出现异常了

开始寻找我电脑中的SQL Server Configuration Manage ,如果有则打开,找到

配置TCP/IP协议为已启用即可。

我的本地没有该工具,只能通过如下方式找到该处

点击我的电脑右键->管理->服务和应用程序->SQLServer配置管理器 ( 两次找这工具都没找到,貌似都是直接从这解决的)

重新输入命令,等待执行

初步成功

由于数据库中有些表无需更改

我们可以在migrations目录中,更改需要增加或修改的具体表

通过修改其中的CreateTable/DropTable,可以控制哪些表需要改动

namespace SAssassin.EF.Model.Migrations
{
  using System;
  using System.Data.Entity.Migrations;

  public partial class updateorderheader : DbMigration
  {
    public override void Up()
    {
      CreateTable(
        "dbo.MyFileInfoes",
        c => new
        {
          Id = c.Int(nullable: false, identity: true),
          FileName = c.String(),
          FileDescription = c.String(),
          FilePath = c.String(),
          FileType = c.Byte(nullable: false),
          FileSize = c.String(),
          FileStatus = c.Byte(nullable: false),
          IsPublic = c.Byte(nullable: false),
          UserId = c.String(),
          UserName = c.String(),
          CreateDate = c.DateTime(nullable: false),
          LastModityDate = c.DateTime(nullable: false),
        })
        .PrimaryKey(t => t.Id);
    }

    public override void Down()
    {
      DropTable("dbo.MyFileInfoes");
    }
  }
}

4.修改代码配置,实现之后的操作没那么麻烦

修改migrations目录中的Configuration.cs文件,开启自动迁移

5.在项目Global.asax的Application_Start中加上如下代码行:

System.Data.Entity.Database.SetInitializer(new System.Data.Entity.MigrateDatabaseToLatestVersion<SAssassin.EF.Model.CodeFirst, SAssassin.EF.Model.Migrations.Configuration>());

到此,数据库迁移工作已经完毕了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • CodeFirst从零开始搭建Asp.Net Core2.0网站

    一步步教大家如何搭建Asp.Net Core2.0网站,以下所有都是建立在.NETCore2.0环境已经搭建好 右键解决方案>新建项目> 选择Web>ASP.NETCoreWeb应用程序(.NET Core) 选择Web应用程序,暂时不选择启用Docker,身份验证选择个人用户账户(会自动生成一系列和用户认证的代码) 随后生代码层次目录如下: 其中会包含身份信息的相关实现,比如相关实体信息(user)之类的,如果想对扩展微软自动的生成的用户实体类,可在Models中的Applicatio

  • asp.net mvc CodeFirst模式数据库迁移步骤详解

    利用Code First模式构建好基本的类后,项目也开始搭建完毕并成功运行,而且已经将数据库表结构自动生成了. 但是,我有新的类要加入,有字段需要修改,那怎么办呢,删库,跑路 ? 哈哈 利用数据库迁移,将原有结构不改动,将新建类进行单独建表操作,或者是已有数据库表,改变字段,那就修改表. 迁移步骤: 1.打开程序包管理器控制台:工具->NuGet包管理器->程序包管理器控制台.(当然还有其它方式也可以打开,我比较喜欢这种) 点击后将弹出程序包管理器控制台 极其要注意的是默认项目!!! 2.启动

  • 基于asp.net MVC 应用程序的生命周期(详解)

    首先我们知道http是一种无状态的请求,他的生命周期就是从客户端浏览器发出请求开始,到得到响应结束.那么MVC应用程序从发出请求到获得响应,都做了些什么呢? 本文我们会详细讨论MVC应用程序一个请求的生命周期,从一个控件到另一个控件是怎样被处理的.我们还会详细介绍一下整个请求的生命周期中,用到的相关组件.因为在平常的开发过程中,我们可能知道怎样去使用MVC框架来处理相关的请求,大部分的时候我们只是在controller和action方法之间做相关的处理,对于真正内在的运行机制可能不是很了解.其实

  • CentOS7安装调试Mysql数据库的步骤详解【实例】

    本实例要求下载并安装调试Mysql数据库. 第一步:下载Mysql数据库安装所需的全部软件. 我已提前下载好数据库软件,直接在服务器下载即可,如下: 通过scp直接下载: [root@agt20 ~]# scp root@192.168.122.10:/root/mysql* /root/ 软件如下图: [root@agt20 ~]# ls mysql-* mysql-5.7.17.tar mysql-community-client-5.7.17-1.el7.x86_64.rpm mysql-

  • ASP.NET MVC如何使用Unity实现Ioc详解

    为什么有这篇文章 最近在学ASP.NET MVC项目中使用Ioc,选用了Unity作为依赖注入的容器组件,在网上找了相关的文章简单实现了依赖注入,但想用文件配置的方式进行容器注入的注册,发现相关的文章实现的方式不适用,因为网上的文章大多是使用Unity 4.0.1的版本,而目前最新的Unity版本是5.8.6,使用配置进行容器注入的代码已然不同. Ioc和Unity IOC(Inversion of Control),即"控制反转",是一种设计思想.有了IoC后,把创建和查找依赖对象的

  • php mysql访问数据库的步骤详解

    php访问mysql数据库的步骤 官方说5.5开始就废弃mysql_query()这块东西很多,当然常用的就几个还是看手册吧. 这里简单记录一下.在我失忆之后可以找回一点记忆.最近一直用框架原生的都快忘了. 1.打开mysql连接 $resource1 = mysql_connect('localhost', 'root', 'root123');//参数1 主机名或主机ip.参数2数据库用户名.参数3数据库用户密码 if (!$resource1) { die('could not conne

  • 解析dedecms空间迁移步骤详解

    1.在新空间重新安装一次原版本的DEDECMS,然后把旧站的所有数据,这里的数据指的是文件,即除了根目录下文件夹include下的配置文件config_base.php外的所有文件覆盖到新空间下 2.在旧网站后台系统管理-数据备份哪里备份数据,这里的数据指的是DEDECMS自己后台所采取的备份文件,类似用phpmyadmin等工具所作的备份.备份完成后,DEDECMS会将备份文件放到根目录下的dede目录(默认是dede,如果你修改了,就是你修改后的目录)下的backup_data文件夹里面,你

  • Xen虚拟机的详细迁移步骤详解

    对于安装使用xen虚拟机大家已是很熟悉的操作了,但有些对于xen migrate的操作有的还不太熟悉.想要了解的朋友可以参考一下. 一.迁移的准备工作 在进行迁移之前,有一些准备工作要做,主要是目的主机和源主机及其网络方面.下面分别加以介绍. 首先,在源主机和目的主机方面,两者必须都运行有Xen和xend守护进程.必须确保目的主机具有足够的磁盘空间.内存容量和资源,以供迁移后的domain运行之用.此外,源主机和目的主机还必须具有相同的体系结构和虚拟化扩展,例如,如果源主机使用的是具有虚拟化扩展

  • PHP使用PDO访问oracle数据库的步骤详解

    前言 PDO 从一开始就吸取了现有数据库扩展成功和失败的经验教训.因为 PDO 的代码是全新的,所以我们有机会重新开始设计性能,以利用 PHP 5 的最新特性. PDO 旨在将常见的数据库功能作为基础提供,同时提供对于 RDBMS 独特功能的方便访问. 虽然LAMP中PHP和Mysql是标准配对,但是公司的项目是Mysql和Oracle分别作为运行库和详单库的,所以PHP连接oracle数据库也是必须要实现的.本篇文章就介绍下如果通过PDO连接到oracle数据库,下面话不多说了,来一起看看详细

  • CentOS 7.x NAT模式上网配置步骤详解

    前言 本机环境介绍如下: 虚拟机版本--VMware Workstation Pro 12.x 系统镜像--CentOS-7-x86_64-DVD-1511.iso static IP address--10.0.0.102 netmask--10.0.0.2 一 VMware 配置 在"编辑"选项卡中,选择"虚拟网络编辑器",如下图: 选择VMnet8,修改子网IP与子网掩码,注意不要给"使用本地DHCP服务将IP地址分配给虚拟机"选项打勾,如

  • 为PHP模块添加SQL SERVER2012数据库的步骤详解

    目录 一.系统要求 二.下载驱动 2.1下载 Microsoft Drivers for PHP for SQL Server 2.2 下载 ODBC Driver for SQL Server 三.配置PHP模块与php.ini文件 3.1从下图可以看到ODBC驱动程序11和13已经不在支持PHP5.9以上的版本,如果你下载的PHP模块是5.9以上的建议下载ODBC17以上的版本 3.2 PHP版本有线程安全问题如果你是用IIS要用线程安全否如果是APACHE版本用线程安全版本 3.3 将下载

随机推荐