1. 一. 模型设计
  2. 1.  遵循EF标准,注意表关系配对
  3. 2.  数据模型里尽量把必须的属性和说明都写全
  4. 3.  EF默认id字段为主键,如果没有,需指定主键
  5. 二. 数据迁移
  6. 1.  命令运行环境:visual studio工具栏->工具->NuGet 程序包管理器->程序包管理器控制台
  7. 2.  基本命令和常用参数
  8. >  get-help                  获取帮助的命令(例:get-help Enable-Migrations –detailed)
  9. –detailed                 详细用法
  10. >  Enable-Migrations         启用迁移
  11. -Force                    强制覆盖
  12. -ProjectName              目标项目(迁移类所在的项目)
  13. -StartUpProjectName       启动项目(包含数据库连接字符串配置文件所在的项目)
  14. -ContextTypeName          需要迁移的数据库(类)
  15. -ConnectionStringName     指定使用配置文件中连接字符串的名称
  16. -ConnectionString         指定使用的连接字符串
  17. -ConnectionProviderName   指定连接字符串的provider名称
  18. -MigrationsDirectory      指定迁移文件的目录(多个数据库,独立自动迁移用)
  19. >  Add-Migration             为挂起的Model变化添加迁移脚本
  20. -Force
  21. -ProjectName
  22. -StartUpProjectName
  23. -ConfigurationTypeName    指定使用的迁移配置
  24. -IgnoreChanges            忽略检测到挂起的model改变,为已有的数据库启用迁移创建一个初始的,空的迁移。
  25. -ConnectionStringName
  26. -ConnectionString
  27. -ConnectionProviderName
  28. >  Update-Database           将挂起的迁移更新到数据库
  29. -Force
  30. -ProjectName
  31. -StartProjectName
  32. -ConfigurationTypeName
  33. -ConnectionStringName
  34. -ConnectionString
  35. -ConnectionProviderName
  36. -SourceMigration          只有-Script打开时才有效。指定迁移的名称用作更新的起点。忽略则使用最后一次应用的迁移。
  37. -TargetMigration          指定将数据库更新到哪个迁移的名称。
  38. -Script                   生成SQL脚本
  39. >  Get-Migrations            获取已经应用的迁移
  40. 3.  迁移操作步骤举例:
  41. DataBase                       :解决方案中,数据模型层项目名称
  42. Member                         :解决方案中,启动项的名称
  43. DataBase.Member.MemberEntities :需要应用数据迁移的数据上下文
  44. a.  第一次启用迁移,输入命令:
  45. Enable-Migrations -ProjectName DataBase -StartUpProjectName Member -ContextTypeName DataBase.Member.MemberEntities
  46. 并敲回车键,然后打开生成的Migrations文件夹中的Configuration.cs文件,
  47. 把构造方法中的AutomaticMigrationsEnabled = false;改为AutomaticMigrationsEnabled = true;
  48. 如果有多个数据库,每个库需要独立指定迁移文件,命令格式如下:
  49. Enable-Migrations -ProjectName DataBase -StartUpProjectName Member -ContextTypeName DataBase.Member.MemberEntities -MigrationsDirectory:MemberMigrations
  50. b.  模型有改动时,输入命令:add-migration update20150508 -ProjectName DataBase -StartUpProjectName Member -Force并敲回车键,创建迁移脚本
  51. 然后 输入命令:Update-Database -Verbose -ProjectName DataBase -StartUpProjectName Member并敲回车键,执行迁移操作
  52. 4.  配置自动迁移
  53. 在应用程序的入口方法(函数)里注册自动迁移:
  54. Database.SetInitializer(new MigrateDatabaseToLatestVersion<DataBase.Member.MemberEntities, DataBase.MemberMigrations.Configuration>());
  55. 注意:Configuration.cs生成的是internal sealed class,如果不在启动程序集中,则需要修改成public
  56. 5.  脱离visual studio环境做数据库版本迁移,可用migrate.exe,可参考:http://msdn.microsoft.com/zh-cn/data/jj618307
  57. 三. 注意事项:
  58. 1.  连接字符串不用DBFirst自动生成的那么复杂,采用如下格式即可:
  59. <add name="MemberEntities" connectionString="server=.;database=Member;integrated security=true;"  providerName="System.Data.SqlClient"/>
  60. 2.  有挂起的Model改变时,会导致操作不正常,注意操作步骤,必要时清理挂起的迁移。
  61. 3.  修正后数据库,里面的数据如果需要调整,用Configuration.cs文件里的Seed方法,示例如下:
  62. protected override void Seed(DataBase.Member.MemberEntities context)
  63. {
  64. var users = new List<User>
  65. {
  66. new User { Account = "test",   Password = "123" },
  67. new User { Account = "admin",   Password = "456" }
  68. };
  69. users.ForEach(s => context.Users.AddOrUpdate(p => p.Account, s));
  70. context.SaveChanges();
  71. }

EF 迁移操作的更多相关文章

  1. Redis Cluster高可用集群在线迁移操作记录【转】

    之前介绍了redis cluster的结构及高可用集群部署过程,今天这里简单说下redis集群的迁移.由于之前的redis cluster集群环境部署的服务器性能有限,需要迁移到高配置的服务器上.考虑 ...

  2. EntityFramework之迁移操作(五)

    使用Code First的话对于实体字段或者表映射修改都需要使用迁移操作,下面列出操作具体步骤 1.创建映射类和实体,本文主要是讲解迁移步骤,其他代码则没有列出 public class Produc ...

  3. Azure Cosmos DB (三) EF Core 操作CURD

    一,引言 接着上一篇使用 EF Core 操作 Azure CosmosDB 生成种子数据,今天我们完成通过 EF Core 实现CRUD一系列功能.EF Core 3.0 提供了CosmosDB 数 ...

  4. EF如何操作内存中的数据以及加载相关联表的数据:延迟加载、贪婪加载、显示加载

    之前的EF Code First系列讲了那么多如何配置实体和数据库表的关系,显然配置只是辅助,使用EF操作数据库才是每天开发中都需要用的,这个系列讲讲如何使用EF操作数据库.老版本的EF主要是通过Ob ...

  5. EF如何操作内存中的数据和加载外键数据:延迟加载、贪婪加载、显示加载

    EF如何操作内存中的数据和加载外键数据:延迟加载.贪婪加载.显示加载 之前的EF Code First系列讲了那么多如何配置实体和数据库表的关系,显然配置只是辅助,使用EF操作数据库才是每天开发中都需 ...

  6. Asp.Net Core 2.0 项目实战(4)ADO.NET操作数据库封装、 EF Core操作及实例

    Asp.Net Core 2.0 项目实战(1) NCMVC开源下载了 Asp.Net Core 2.0 项目实战(2)NCMVC一个基于Net Core2.0搭建的角色权限管理开发框架 Asp.Ne ...

  7. EF迁移命令

    EF迁移设置的最后一步是在包管理器控制台中输入命令“add-migration InitialMigration -IgnoreChanges”.“InitialMigration”(高亮的黄色)是您 ...

  8. Flask学习笔记:数据库迁移操作flask-script+alembic/flask-migrate

    数据库迁移是将代码中模型类(即表)的修改同步到数据库中, flask-sqlalchemy的模型类一旦使用create_all()映射到数据库中后,对这个模型类的修改(例如添加了一个新的字段)就不会再 ...

  9. redis键的迁移操作

    1.redis单个实例内多库间的数据迁移操作 命令名称:move 语法:move key db 功能:将当前数据库的key移动到给定的数据库db当中.如果当前数据库(源数据库)和给定数据库(目标数据库 ...

随机推荐

  1. socket 由浅入深系列------ 原理(一)

    来自:网络整理 个人觉得写一个网络应用程序没有是一件非常easy的事.其实,我们刚開始的时候总觉得的原则: 建立------>连接套接字------->接受一个连接---->发送数据 ...

  2. Excel数据字典转换为PDM(且显示表名、字段相应的中文描写叙述)

    在工作中遇到了一个问题就是把Excel数据字典转换为PDM. 可是转换完毕了全是英文,原来对表名.字段名的中文描写叙述就没有了. 且对于这个问题在powerdesigner15.2以后能够直接完毕.可 ...

  3. java并发编程之Semaphore

    信号量(Semaphore).有时被称为信号灯.是在多线程环境下使用的一种设施, 它负责协调各个线程, 以保证它们可以正确.合理的使用公共资源. 一个计数信号量.从概念上讲,信号量维护了一个许可集.如 ...

  4. 2015ACM/ICPC Asia Regional Changchun Online /HDU 5438 图

    Ponds                                   Time Limit: 1500/1000 MS (Java/Others)    Memory Limit: 1310 ...

  5. 怎样处理Gradle中的这个文件下载慢的问题的

    如图:在build.gradle中的dependencies中加上要依赖的包后,就点击sync gradle.然后就开始了下载.在此过程中我是FQ了的(在此同时我是可以用chrome进入https:/ ...

  6. 8 Range 对象

    8.1 引用Range 引用Range的主要方法: Application.ActiveCell Application.Range Application.Selection Worksheet.C ...

  7. JAVA中的语法

    分支条件判断: if(条件){} if(条件){}else{} if(条件){}else if(条件){}else{} 分支等值判断: switch(表达式){ case : break; defau ...

  8. [Swift通天遁地]一、超级工具-(11)使用EZLoadingActivity制作Loading加载等待动画

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  9. hexo简易脚本

    !/bin/bash 检查是否为master分支.目录是否正确 function git-branch-name { git symbolic-ref --short -q HEAD } functi ...

  10. 关于mfc添加热键

    对于mfc的添加热键的文章已经有很多了,我这里就简单的说一下并且说一些可能出的错误 首先在资源文件中添加ACCELERATOR然后在资源文件下的RC中找到ACCELERATOR的节点,打开后可以发现一 ...