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-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模式数据库迁移步骤的更多相关文章
- 使用EF Code First搭建一个简易ASP.NET MVC网站,允许数据库迁移
本篇使用EF Code First搭建一个简易ASP.NET MVC 4网站,并允许数据库迁移. 创建一个ASP.NET MVC 4 网站. 在Models文件夹内创建Person类. public ...
- EF的CodeFirst模式自动迁移(适用于开发环境)
EF的CodeFirst模式自动迁移(适用于开发环境) 1.开启EF数据迁移功能 NuGet包管理器------>程序包管理控制台---------->Enable-Migrations ...
- asp.net MVC SignalR 与数据库 实时同步显示
asp.net MVC SignalR 与数据库 实时同步显示 错误:未启用当前数据库的 SQL Server Service Broker,因此查询通知不受支持.如果希望使用通知,请为此数据库启用 ...
- Asp.Net MVC 上传图片到数据库
[读书笔记]Asp.Net MVC 上传图片到数据库(会的绕行) 之前上传图片的做法都是上传到服务器上的文件夹中,再将url保存到数据库.其实在MVC中将图片上传到数据库很便捷的事情,而且不用去存 ...
- ASP.NET MVC——CodeFirst开发模式
Entity Framework框架提供了几种开发模式,比如Database First,Model First,Code First.Database First是最老也是应用得最广泛的一种设计方式 ...
- ASP.NET MVC 4 让数据库自动迁移
今天实际测试了下这个方法,可以保持数据库与实体类同步,同时不会出现数据库迁移的提示.但是只能更改实体类来改变数据库,而不能改数据库来改变实体类.所以这才是Code frist,如果通过改数据库表来改动 ...
- 【转】asp.net mvc(模式)和三层架构(BLL、DAL、Model)的联系与区别
原文地址:http://blog.csdn.net/luoyeyu1989/article/details/8275866 首先,MVC和三层架构,是不一样的. 三层架构中,DAL(数据访问层).BL ...
- ASP.NET MVC架构模式
一.是什么? MVC,即(Model-View-Controller,模型—视图—控制器模式),和三层类似,用于表示一种软件架构模式.在这种模式下,将系统的实现分为模型Model,视图View,控制器 ...
- ASP.NET MVC + 工厂模式 + 三层 + 缓存
最近将手头的项目总结整理了一下,以方便自己的学习.... 下面直接上图先介绍项目的结构图: 项目是ASP.NET MVC 4.0的应用程序,DBUtility这个类库主要是DbHelper操作数据库的 ...
随机推荐
- 通过修改my.ini配置文件来解决MySQL 5.6 内存占用过高的问题
打开后台进程发现mysql占用的内存达到400+M. 修改一下my.ini这个配置文件的配置选项是可以限制MySQL5.6内存占用过高这一问题的,具体修改选项如下: performance_schem ...
- 201521123053 《Java程序设计》第5周学习总结
1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 1.2 可选:使用常规方法总结其他上课内容. 答:我开始做笔记了,在本周学习中的一些笔记 * abstract关键字是为了实现 ...
- 201521123100 《Java程序设计》第3周学习总结
1. 本周学习总结 初学面向对象,会学习到很多碎片化的概念与知识.尝试学会使用思维导图将这些碎片化的概念.知识组织起来.请使用纸笔或者下面的工具画出本周学习到的知识点.截图或者拍照上传. 2. 书面作 ...
- 201521123065《Java程序设计》第2周学习总结
1.本周学习总结 字符串创建后是不可变的,可以使用加号进行字符串之间的拼接. 使用for循环对字符串进行修正会不断产生新的字符串,应使用StringBuilder. 字符串内容的比较要用equal. ...
- 201521123003《Java程序设计》第1周学习总结
1. 本周学习总结 1.了解Java语言的特点: 2.明确了jdk,jre,jvm的具体含义及区别 3.掌握java的编译及运行步骤 4.了解jdk文档的用法 2. 书面作业 Q1.为什么java程序 ...
- del命令实现全盘删除指定文件
@echo off Rem :全盘删除指定文件 set "fileName=Normal.dotm" set "outPutPath=C:\result.txt" ...
- 201521123045 《JAVA程序设计》 第14周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. 2. 书面作业 1. MySQL数据库基本操作 建立数据库,将自己的姓名.学号作为一条记录插入.(截图,需出现自 ...
- editplus的设置
1, 下载editplus3软件并且进行安装, 我这里是 EditPlus_3.4.1.1123_XiaZaiBa 2, 进行相关设置: 工具-->参数设置-->常规--勾选 (把Edit ...
- 将eclipse左边目录结构改为 树形结构
认情况下Eclipse的显示内容如下: 这种视图我们看起来不太方便,于是我们需要改变一下它的显示结构,我们点击一下下图中蓝色圆圈圈住的图标 在弹出的框中把鼠标放到"package prese ...
- anular2 表单包含多个组件并验证提交
angular2表单最常用的方法就是在input或者textarea里直接添加formControlName或者formControlGroup进行数据双向绑定并验证. <form [formG ...