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. netty4与protocol buffer结合简易教程

    各项目之间通常使用二进制进行通讯,占用带宽小.处理速度快~ 感谢netty作者Trustin Lee.让netty天生支持protocol buffer. 本实例使用netty4+protobuf-2 ...

  2. HDU 4352 XHXJ&#39;s LIS(数位dp&amp;状态压缩)

    题目链接:[kuangbin带你飞]专题十五 数位DP B - XHXJ's LIS 题意 给定区间.求出有多少个数满足最长上升子序列(将数看作字符串)的长度为k. 思路 一个数的上升子序列最大长度为 ...

  3. Nginx + FastCgi + Spawn-fcgi + C 架构的server环境搭建

    1.Nginx 1.1.安装 Nginx 的中文维基 http://wiki.codemongers.com/NginxChs 下载 Nginx 0.6.26(开发版)(请下载最新版本号) tar z ...

  4. ubuntu14.04 的ibus不能卸载(安装fcitx输入法框架时可能有这个需求)。出现无system setting有用程序

    每年的ubuntu新版本号公布,都会吸引一大批热血青年. 关注越多也让ubuntu越来越好了. 使用ubuntu的人都会在安装系统之后马上安装顺手的输入法,也可能不会.看人. 安装输入法,对于中文输入 ...

  5. IIS网站无法启动,提示 另一个程序正在使用此文件

    s还用netstat -ano命令,观察哪一个进程正在使用80端口,任务管理中勾选PID,看看是哪个程序,关掉即可

  6. hdu 4777 Queue

    题目大意: 一些人,每个人的身高都是不一样的 然后再给你一个k,表示这个人的左边或者右边,有k个人比他高 然后让你构造一个满足条件且字典序最小的序列 思路: 按照权值排序 这样每次加进去后只有后面的才 ...

  7. Flask中的ThreadLocal本地线程,上下文管理

    先说一下和flask没有关系的: 我们都知道线程是由进程创建出来的,CPU实际执行的也是线程,那么线程其实是没有自己独有的内存空间的,所有的线程共享进程的资源和空间,共享就会有冲突,对于多线程对同一块 ...

  8. Tomcat组件

    Tomcat组件 tomcat常用组件 Tomcat的组织结构 Tomcat是一个基于组件的服务器,它的构成组件都是可配置的,其中最外层的给件是CATALINA SERVLET容器,其他的组件按照一定 ...

  9. Linux 上安装 Node.js

    Linux 上安装 Node.js 直接使用已编译好的包(在个人阿里云服务器47.100.6.106上安装) Node 官网已经把 linux 下载版本更改为已编译好的版本了,我们可以直接下载解压后使 ...

  10. bzoj 1630: [Usaco2007 Demo]Ant Counting【dp】

    满脑子组合数学,根本没想到dp 设f[i][j]为前i只蚂蚁,选出j只的方案数,初始状态为f[0][0]=1 转移为 \[ f[i][j]=\sum_{k=0}^{a[i]}f[i-1][j-k] \ ...