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. 自已实现一个UI库

    [2014年写一个UI库时写的几个文章,公布出来] 几年前的一个嵌入式的UI开发,使自己有机会接触到了UI的一些底层知识,尽管之前也开发过非常多Windows下的信息应用系统,也做非常多的界面开发,但 ...

  2. Linux查看文件最后几行的命令

    tail -n 20 filename说明:显示filename最后20行

  3. python爬虫【第1篇】

    一.文件读写 1.打开文件 # 以读文件模式代开new.txt f=open(r"c:\new.txt",“r”) f=open("c:\new.txt",“r ...

  4. ffmpeg-linux32-v3.3.1

    . imageio-binaries/ffmpeg at master · imageio/imageio-binaries · GitHub https://github.com/imageio/i ...

  5. 利用函数计算构建微信小程序的Server端

    10分钟上线 - 利用函数计算构建微信小程序的Server端-博客-云栖社区-阿里云 https://yq.aliyun.com/articles/435430 函数计算  读写 oss import ...

  6. 00020970-0000-0000-C000-000000000046

    00020970-0000-0000-C000-000000000046 System.InvalidCastException: 无法将类型为“Microsoft.Office.Interop.Wo ...

  7. ZOJ 1414:Number Steps

    Number Steps Time Limit: 2 Seconds      Memory Limit: 65536 KB Starting from point (0,0) on a plane, ...

  8. 美国诚实签经验——中英文行程单、往返机票、用英语面试的申请者通过率>用中文面试的申请者的通过率、一直保持着微笑,看上去很自信,也很诚恳、户口簿带上最好

    在排队等待时据我的观察,用英语面试的申请者通过率>用中文面试的申请者的通过率.一家人申请通过率>单个人通过率:商务签证通过率>旅游签证通过率 一.    面签材料 1.    必备材 ...

  9. 转 source insight 复制后光标在前面

    source insight 里编辑的时候,每次粘贴后,光标停留在粘贴内容的前面. 我想把它设定为 粘贴后,光标移动倒粘贴内容的后面. 怎么做? 这是个设置问题,按照下面的步骤设定就可以了. Opti ...

  10. bzoj 3308 九月的咖啡店

    题目大意: 求若干个<=n的数 两两互质 使和最大 求这个最大的和 思路: 显然,得到两个结论 1 最终的所有数都只能分解为两个质因数 2 这两个质因数 一个<根号n 一个>根号n ...