利用Code First模式构建好基本的类后,项目也开始搭建完毕并成功运行,而且已经将数据库表结构自动生成了,但是,我有新的类要加入,有字段需要修改,就得将这部分修改同步到数据库中,利用数据库迁移,将原有结构不改动,将新建类进行单独建表操作,或者是已有数据库表,改变字段,那就修改表。

迁移步骤:

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

  

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

  

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

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

  

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

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

  

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

  

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

  成功操作会如下提示:

  

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

  

3、开始数据库迁移命令

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

  输入add-migration updateorderheader

  

  2.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>());

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

 2017-10-15,望技术有成后能回来看见自己的脚步。

asp.net mvc CodeFirst模式数据库迁移步骤的更多相关文章

  1. 使用EF Code First搭建一个简易ASP.NET MVC网站,允许数据库迁移

    本篇使用EF Code First搭建一个简易ASP.NET MVC 4网站,并允许数据库迁移. 创建一个ASP.NET MVC 4 网站. 在Models文件夹内创建Person类. public ...

  2. EF的CodeFirst模式自动迁移(适用于开发环境)

    EF的CodeFirst模式自动迁移(适用于开发环境) 1.开启EF数据迁移功能 NuGet包管理器------>程序包管理控制台---------->Enable-Migrations ...

  3. asp.net MVC SignalR 与数据库 实时同步显示

    asp.net MVC SignalR 与数据库 实时同步显示 错误:未启用当前数据库的 SQL Server Service Broker,因此查询通知不受支持.如果希望使用通知,请为此数据库启用 ...

  4. Asp.Net MVC 上传图片到数据库

    [读书笔记]Asp.Net MVC 上传图片到数据库(会的绕行)   之前上传图片的做法都是上传到服务器上的文件夹中,再将url保存到数据库.其实在MVC中将图片上传到数据库很便捷的事情,而且不用去存 ...

  5. ASP.NET MVC——CodeFirst开发模式

    Entity Framework框架提供了几种开发模式,比如Database First,Model First,Code First.Database First是最老也是应用得最广泛的一种设计方式 ...

  6. ASP.NET MVC 4 让数据库自动迁移

    今天实际测试了下这个方法,可以保持数据库与实体类同步,同时不会出现数据库迁移的提示.但是只能更改实体类来改变数据库,而不能改数据库来改变实体类.所以这才是Code frist,如果通过改数据库表来改动 ...

  7. 【转】asp.net mvc(模式)和三层架构(BLL、DAL、Model)的联系与区别

    原文地址:http://blog.csdn.net/luoyeyu1989/article/details/8275866 首先,MVC和三层架构,是不一样的. 三层架构中,DAL(数据访问层).BL ...

  8. ASP.NET MVC架构模式

    一.是什么? MVC,即(Model-View-Controller,模型—视图—控制器模式),和三层类似,用于表示一种软件架构模式.在这种模式下,将系统的实现分为模型Model,视图View,控制器 ...

  9. ASP.NET MVC + 工厂模式 + 三层 + 缓存

    最近将手头的项目总结整理了一下,以方便自己的学习.... 下面直接上图先介绍项目的结构图: 项目是ASP.NET MVC 4.0的应用程序,DBUtility这个类库主要是DbHelper操作数据库的 ...

随机推荐

  1. Run Logic

    1.lr_output_message()函数,其作用是将内容输出到Replay Log中: 如果输出整数型内容,应该这样写; int x; x=10; lr_output_message(" ...

  2. 我的hibernate学习记录(一)

    之前已经过滤一下hibernate的简单的用法,但是近期有点时间,所以重新看下视频,敲下代码,翻下笔记,写博客与大家分享一下. hibernate简介 Hibernate是一个开放源代码的对象关系映射 ...

  3. 转: 【Java并发编程】之二十一:并发新特性—阻塞队列和阻塞栈(含代码)

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/17511147 阻塞队列 阻塞队列是Java5并发新特性中的内容,阻塞队列的接口是Java. ...

  4. 提高SQL执行效率的16种方法

      项目中优化sql语句执行效率的方法:1)尽量选择较小的列2)将where中用的比较频繁的字段建立索引3)select子句中避免使用'*'4)避免在索引列上使用计算.not in 和<> ...

  5. MySQL (三)-- 字段属性、索引、关系、范式、逆规范化

    1 字段属性 主键.唯一键和自增长. 1.1 主键 主键:primary key,一张表中只能有一个字段可以使用对应的键,用来唯一的约束该字段里面的数据,不能重复. 一张表只能有最多一个主键. 1.1 ...

  6. 201521123014 《Java程序设计》第3周学习总结

    1. 本周学习总结 2. 书面作业 Q1. 代码阅读 public class Test1 { private int i = 1;//这行不能修改 private static int j = 2; ...

  7. 201521123066 《java程序设计》第一周学习总结

    本周学习总结 (1)学习了Java的跨平台运行是因为有虚拟机,其特点是具有简单性,结构中立. (2)老师使用了新的作业模式,要学会发现其中的优势并好好学习使用. 书面作业 (1)为什么java程序可以 ...

  8. 201521123051《Java程序设计》第十二周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 一 JAVA语言中主要通过流来完成IO操作. 流:计算机的输入输出之间流动的数据序列,也是类的对象.java中 ...

  9. java从控制台接收一个数字

    //时间:2017/7/22//作者:江骆//功能:从控制台接收一个数import java.io.*;  //引入一个IO流的包public class helloworld1{    public ...

  10. 注解【介绍、基本Annotation、元Anntation、自定义注解、注入基本信息、对象】

    什么是注解? 注解:Annotation-. 注解其实就是代码中的特殊标记,这些标记可以在编译.类加载.运行时被读取,并执行相对应的处理. 为什么我们需要用到注解? 传统的方式,我们是通过配置文件(x ...