zoukankan      html  css  js  c++  java
  • 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 ,我也是初学者,有问题一起探讨,大神请指教。

  • 相关阅读:
    Python Revisited Day 13 (正则表达式)
    Python Revisited Day 06 (面向对象程序设计)
    Python Revisited (变量)
    Python Revisited Day 05(模块)
    Python Revisited Day 04 (控制结构与函数)
    Python Revisited Day 03 (组合数据类型)
    Numpy
    Python Revisited Day 01
    Python3使用openpyxl读写Excel文件
    Python3操作YAML文件
  • 原文地址:https://www.cnblogs.com/shellphen/p/4645891.html
Copyright © 2011-2022 走看看