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. 字节序:Big Endian 和 Little Endian

    一.字节序 字节序,也就是字节的顺序,指的是多字节的数据在内存中的存放顺序. 在几乎所有的机器上,多字节对象都被存储为连续的字节序列.例如:如果C/C++中的一个int型变量 a 的起始地址是& ...

  2. Struts2默认拦截器栈及内建拦截器使用具体解释

    Struts2内建拦截器介绍:   alias (别名拦截器):同意參数在跨越多个请求时使用不同别名,该拦截器可将多个Action採用不同名字链接起来,然后用于处理同一信息.  autowiring  ...

  3. 浅析java(多方面解读)

    昨天我简单的说了一下我的编程学习之路.假设你热爱编程.而不是仅为了赚钱,我想我的经历或许会给你带来一定的启示,假设你还没有看.请先慢慢读完我的编程学习之路,您肯定会有还有一番体会的.. 好了.废话不多 ...

  4. 获取特定html源码 富文本编辑器 爬虫生成 dom

    python beautifulsoup获取特定html源码 - 吴悟无 - 博客园 https://www.cnblogs.com/vickey-wu/p/6843411.html PyQuery库 ...

  5. Binary safe

    https://en.wikipedia.org/wiki/Binary-safe A binary-safe function is one that treats its input as a r ...

  6. 一张图轻松记住PHP的*类*以及private和protected的区别

    上图概要的说了下php类的特性,类的方法同属性类似. 图中B类继承自A类,B是A的子类,$x和$y都是B的实例化对象. 1. 原型引用:[A::    . B::   ],仅限public stati ...

  7. [RK3288][Android6.0] 调试笔记 --- Goodix GT9和GT9F区别【转】

    本文转载自:http://blog.csdn.net/kris_fei/article/details/78341425 Platform: RK3288 OS: Android 6.0 Kernel ...

  8. Runtime ----- 带你上道

    在IOS开发和学习过程中,我们经常会接触到一个词: Runtime  .很多开发者对之既熟悉又陌生,基本都是浅尝辄止,达不到灵活使用的水平(话说开发中也确实不经常用..)本文和大家一起研究一下,Run ...

  9. js中setInterval() 和 setTimeout()

    setInterval() 方法 定义和用法 setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式. setInterval() 方法会不停地调用函数,直到 clearI ...

  10. 2-4 Vue中的属性绑定和双向数据绑定

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...