zoukankan      html  css  js  c++  java
  • EF 迁移操作

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