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. Cocos2d-X中的ProgressTimer

     ProgressTimer即进度条,进度条在游戏开发中运用很广泛,比如在一些格斗游戏中,显示血液的变化,还有游戏载入进度,等都离不开进度条 Cocos2d-X中使用CCProgressTimer ...

  2. web 开发之js---ajax cgi异步调试

    xmlhttp.onreadystatechange=function() { //alert(xmlhttp.readyState); //alert(xmlhttp.status); if (xm ...

  3. 步长为float

    import numpy as np for i in np.arange(0.005, 0.05, 1): print(i)

  4. Hibernate - Query简易

    package cn.demo; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; im ...

  5. hibernate 下载

    https://sourceforge.net/projects/hibernate/files/hibernate-orm/5.0.7.Final/ http://sourceforge.net/p ...

  6. 【转】Material Design 折叠效果 Toolbar CollapsingToolbarLayout AppBarLayout

    我非常喜欢Material Design里折叠工具栏的效果,bilibili Android客户端视频详情页就是采用的这种设计.这篇文章的第二部分我们就通过简单的模仿bilibili视频详情页的实现来 ...

  7. PDO连接mysql8.0报PDO::__construct(): Server sent charset (255) unknown to the client. Please, report to the developers错误

    安装mysql8.0之后,尝试使用php连接mysql,总是报PDO::__construct(): Server sent charset (255) unknown to the client. ...

  8. RDA PQ工具使用 (屏参调整)

    使用客户规格书,制作屏参文件. 注意:,必填区和计算区,必填区根据屏参的SPEC填写,具体的屏参文件参数通过点击“Calc Sync”生成. 如:HV320WHB-N81的SPEC: 打开“Color ...

  9. Git分支管理策略(转)

    作者: 阮一峰 日期: 2012年7月 5日 使用"版本管理系统"(Version Control System). 眼下最流行的"版本管理系统",非Git莫属 ...

  10. bzoj 2427: [HAOI2010]软件安装【tarjan+树形dp】

    一眼最大权闭合子图,然后开始构图,画了画之后发现我其实是个智障网络流满足不了m,于是发现正确的打开方式应该是一眼树上dp 然后仔细看了看性质,发现把依赖关系建成图之后是个奇环森林,这个显然不能直接dp ...