zoukankan      html  css  js  c++  java
  • EntityFramework:迁移工具入门

    背景

    刚毕业做项目的时候,没有用“迁移”这个概念,系统发布和更新的过程让人非常痛苦,在学习 Ruby On Rails 的过程解除了“迁移”,以后的所有项目都会先确定好“迁移”的方案,本文介绍一下EntityFramework5提供的迁移工具。

    之前是如何做的?

    原始的迁移脚本

    脚本格式

     1 --执行开始--
     2 
     3     Alter Table RcExaminees ADD [IntroducerOfEmployeeId] uniqueidentifier null
     4 
     5 --执行结束--
     6 
     7 --撤销开始--
     8     Alter Table RcExaminees DROP COLUMN [IntroducerOfEmployeeId]
     9 
    10 --撤销结束--

    说明

    用C#开发一个迁移工具,按照一些参数(向上迁移、向下迁移和迁移范围等)执行脚本就行了。

    EntityFramework5提供了更好的选择

    本文给出常用的命令和参数,详情可以参考:http://www.cnblogs.com/happyframework/p/3308678.html

    打开【程序包管理器控制台】

    启用迁移

    1 Enable-Migrations -ProjectName Happy.Examples.OrderManagement.EntityFramework -StartUpProjectName Happy.Examples.OrderManagement.EntityFramework

    -ProjectName:DbContext所在的项目。

    -StartUpProjectName:准备将迁移文件存放到其中的项目。

    添加迁移

    1 Add-Migration Initialize -ProjectName Happy.Examples.OrderManagement.EntityFramework -StartUpProjectName Happy.Examples.OrderManagement.EntityFramework

    更新数据库

    1 Update-Database -ProjectName Happy.Examples.OrderManagement.EntityFramework -StartUpProjectName Happy.Examples.OrderManagement.EntityFramework

    注意:这里没有指定-ConnectionStringName,默认会用-StartUpProjectName指定的项目中的DbContext的类名作为参数值,在-StartUpProjectName指定的项目配置文件中配置如下内容:

    1   <connectionStrings>
    2     <add name="OrderManagementUnitOfWork" connectionString="Data Source=(LocalDB)v11.0;AttachDbFilename=E:CodingHappyProjectsHappy.Examples.OrderManagementHappy.Examples.OrderManagement.EntityFrameworkDatabaseOrderManagement.mdf;Integrated Security=True" providerName="System.Data.SqlClient"/>
    3   </connectionStrings>

    最终效果

    备注

    EntityFramework5提供的迁移工具能满足我们几乎所有要求,没必要再开发自己的迁移工具了,详细学习还是参考这两篇文章:

    1. http://weblogs.asp.net/fredriknormen/archive/2012/02/15/using-entity-framework-4-3-database-migration-for-any-project.aspx
    2. http://www.cnblogs.com/happyframework/p/3308678.html
  • 相关阅读:
    SQL-修改表名,列名
    MySQL必知必会-7、数据过滤
    排序
    Leetcode题解-双指针
    MySQL必知必会-6、过滤数据
    MySQL必知必会-5、排序检索数据
    MySQL必知必会-4、检索数据
    Java容器源码分析-LinkedList
    Java容器源码分析-CopyOnWriteArrayList
    Java容器源码分析-Vector
  • 原文地址:https://www.cnblogs.com/happyframework/p/3309145.html
Copyright © 2011-2022 走看看