ABP Migration(数据库迁移)
今天准备说说EntityFramework 6.0+,它与我之前所学的4.0有所区别,自从4.1发布以来,code first 被许多人所钟爱,Dbcontext API也由此时而生。早在学校的时候就听老师说过Db first,Model first 和 Code first ,
没怎么去注意,最近我直接从Db first 跳到了 Code first,去了解了下,个人觉得Model first 和 Code first 没多大区别,英文好的人看以看看http://stackoverflow.com/questions/5446316/code-first-vs-model-database-first,
在这里我也稍微解释下,code first 最大优点就是代码干净简洁,可以使用代码完全控制数据库相关的操作,而不需要到管理系统里面建库建表,也没有那些EntityFramework 4.0里面的那些自动生成的XML文件(看着就头疼,
因为不是自己写的代码),改完下表又得重新搭建一下实体框架(真的很麻烦啊)。但是任何强大的东西都有其一定的弊端,正因为使用如此简单,所以容易造成数据的丢失,特别是像我这种从Db frist 直接跳到 code first 的人如果没有特别了解,
就去跟那些已经使用EF6的人一起做事。这些不是重点,重点是Migration(数据库迁移),数据库迁移对于企业级应用程序来说是再正常不过了吧。拿我们Abp的例子来说吧,首先到ABP官网下载项目https://github.com/aspnetboilerplate,
双击那个NuGet包管理.exe,使用VS2012+打开项目, 在VS工具栏里找到工具==》Nuget程序包管理器==》程序包管理器控制台,先注意看控制台上面的默认项目是不是EntityFramework层,如果不是则选择它,
,改成下面这样

在控制台里面输入:Install-Package EntityFramework 命令,

这样最新版的EF就安装到了你的EntityFramework层,是不是很简单,然后建表,先改下你的配置文件

当然不改的话也是可以的,但是不安全,例子给的是信任连接,也就是说不需要用户名和密码就可以进到你的数据库,然后又到了输入命令的时候了,
,如果确定命令没有输入错误,找3个点:1.默认项目是不是EntityFramework,2.启动项目是不是UI层,3.如果前面两个都没问题,那么请关掉VS,重新打开项目,让VS重新加载下项目,不要问我为什么,我也不知道(大神告诉我的),
只能自己去猜测。注意看我用红线画出来的东西,等下告诉你为什么 ,这样表就建好了,

,那个People表是根据我们例子里面的Person类生成的,

看到那个Table特性,就知道为什么生成的表名是People了,凡是加上Table特性的实体类,在运行Update-database命令的时候就会生成对应的表,它的实现原理是反射,至于刚才那个seed方法是什么意思呢,
打开那个Migration文件夹,看到里面的Configuration.cs , 左边那个Seed方法,每次更新数据库最后都会执行这个方法,可以在这里写代码增加记录等等,最后要说说那个Migration了,首先看到上面那个Configuration.cs里面的Configuration方法里面有个AutomaticMigrationEnable属性,此时它是false,也就是说此时是不允许自动迁移的,当然这个Migration文件夹是之前就加上去的,我们先把它删除掉,

,没有了,运行命令Add Migration InitialCreate
,
看到没有,报错了,错误消息是没有找到迁移配置,这时候我们需要先启动迁移,执行命令:Enable-Migrations
,
Migration文件夹又神奇的出现了,再运行:Add-Migration InitialCreate命令,注意那个InitialCreate,

看到右边那个Migration文件夹里多了一个2015...InitialCreate,看到这里懂了吧,然后我贴一段我从网上找到的图
,
这个命令我还没用过,不过应该没什么问题。演示用的项目到Github里面去下载,地址:https://github.com/aspnetboilerplate ,我也是初学者,有问题一起探讨,大神请指教。
ABP Migration(数据库迁移)的更多相关文章
- 【6】Laravel5.1的migration数据库迁移
查看Laravel5.1的目录 当你配置好数据库后,在命令行执行下边的操作 php artisan migrate 打开数据库会发现,我们的数据库多了四个表,神奇吧! 打开任意一个migration查 ...
- Laravel5.1 Migration数据库迁移文件
Migration方便于团队开发,它就像数据库的版本控制一样,它的功能就是可以和别人共享你的数据库结构.这么说可能不太好理解,你跟着敲敲就明白了. 0 前提工作-配置数据库 找到你根目录的 .env ...
- ABP 框架 数据库底层迁移 Mysql 集群
技术交流,请加QQ群:538327407 我的各种github 开源项目和代码:https://github.com/linbin524 背景 笔者 目前架构的IOT 项目是使用abp 框架作为后台, ...
- Abp数据库迁移注意事项
前记:昨天下载了一个Abp模板,然后尝试利用EF CodeFirst进行数据库生成操作,然后就是一直报错 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误.未找到或无法访问服务 ...
- MySql 使用 EF Core 2.0 CodeFirst、DbFirst、数据库迁移(Migration)介绍及示例
dotnet core 2.0 发布已经好几天了,期间也把原来 dotnet core 1.1 的 MVC 项目升级到了 2.0,升级过程还是比较顺利的,变动也不是太多.升级的过程中也少不了 Enti ...
- 二、core abp 数据库迁移
一.数据库迁移-ABP(库) 1.配置链接数据库: 贴以下代码: { "ConnectionStrings": { "Default": "Serv ...
- Laravel 5.2数据库--迁移migration
Laravel中的migrations文件存放的是数据库表文件等结构,可以说是一个跟git差不多的,可以说像是数据库的版本控制器,所以可以叫做迁移.因为它可以很快速的很容易地构建应用的数据库表结构. ...
- 2.EF中 Code-First 方式的数据库迁移
原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/code-first-migrations-with-entity-framework/ 系列目 ...
- laravel数据库迁移(三)
laravel号称世界上最好的框架,数据库迁移算上一个,在这里先简单入个门: laravel很强大,它把表中的操作写成了migrations迁移文件,然后可以直接通过迁移文件来操作表.所以 , 数据迁 ...
随机推荐
- VS2012 VS2015 的项目配置模板及其目录
建立的项目多了的时候 , 就希望能自己配置好一个项目模板,以后建立的项目自动使用这个模板就省事了,不用每次都要改, 每个项目都要改了! 经不懈努力, 终于 发现了 vs2015,vs2012 (我只用 ...
- C#学习系列-文章导航
C#学习系列-.NET体系结构 C#学习系列-类与结构的区别 C#学习系列-String与string的区别 C#学习系列-抽象方法与虚拟方法的区别 C#学习系列-out与ref的区别 C#学习系列- ...
- Performance Monitor1:开始性能监控
Performance Monitor是Windows内置的一个可视化监控工具,能够在OS级别上实时记录系统资源的使用情况,通过收集和存储日志数据,在SQL Server发生异常时,能够还原系统当时的 ...
- 让低版本的 Android 项目显示出 Material 风格的点击效果
每天都被不同的需求纠缠的生活是幸福而又不幸的,这不我们家亲爱的设计师们又让我们在低版本的 Android 平台上实现一下类似于 Material Design 的点击效果. 虽然大家都知道 Mater ...
- Building OpenCascade on Windows with Visual Studio
Building OpenCascade on Windows with Visual Studio eryar@163.com 摘要Abstract:详细说明OpenCascade的编译配置过程,希 ...
- 【原创】机器学习之PageRank算法应用与C#实现(2)球队排名应用与C#代码
在上一篇文章:机器学习之PageRank算法应用与C#实现(1)算法介绍 中,对PageRank算法的原理和过程进行了详细的介绍,并通过一个很简单的例子对过程进行了讲解.从上一篇文章可以很快的了解Pa ...
- 配置putty自动登陆服务器
putty是一款知名的SSH工具,可以用来登陆linux服务器,提供了终端.SSH是secure Shell的缩写.我之前也有一篇文章介绍这个话题:http://www.cnblogs.com/che ...
- 使用nginx解决跨域问题(flask为例)
背景 我们单位的架构是在api和js之间架构一个中间层(python编写),以实现后端渲染,登录状态判定,跨域转发api等功能.但是这样一个中间会使前端工程师的工作量乘上两倍,原本js可以直接ajax ...
- 小菜学习Winform(五)窗体间传递数据
前言 做项目的时候,winfrom因为没有B/S的缓存机制,窗体间传递数据没有B/S页面传递数据那么方便,今天我们就说下winfrom中窗体传值的几种方式. 共有字段传递 共有字段传递实现起来很方便, ...
- [c++] Class
也是醉了,一个.h文件就有这么多细节问题: 初始化列表,使用{} 也可以. 类中的引用和const变量,必须立即在初始化列表中提前初始化. 常成员函数,const 放在函数后, 常成员函数即不能改变成 ...