• Some lines about EF Code First migration.


    Some lines about EF Code First migration:
    
    
    一. 模型设计
         1.  遵循EF标准,注意表关系配对
         2.  数据模型里尽量把必须的属性和说明都写全
         3.  EF默认id字段为主键,如果没有,需指定主键
    二. 数据迁移
    
         1.  命令运行环境:visual studio工具栏->工具->NuGet 程序包管理器->程序包管理器控制台
    
         2.  基本命令和常用参数
            >  get-help                              获取帮助的命令(例:get-help Enable-Migrations –detailed)
               –detailed                             详细用法
            >  Enable-Migrations              启用迁移
               -Force                                  强制覆盖
               -ProjectName                      目标项目(迁移类所在的项目)
               -StartUpProjectName          启动项目(包含数据库连接字符串配置文件所在的项目)
               -ContextTypeName             需要迁移的数据库(类)
               -ConnectionStringName     指定使用配置文件中连接字符串的名称
               -ConnectionString               指定使用的连接字符串
               -ConnectionProviderName 指定连接字符串的provider名称
            >  Add-Migration                    为挂起的Model变化添加迁移脚本
               -Force
               -ProjectName
               -StartUpProjectName
               -ConfigurationTypeName    指定使用的迁移配置
               -IgnoreChanges                  忽略检测到挂起的model改变,为已有的数据库启用迁移创建一个初始的,空的迁移。
               -ConnectionStringName  
               -ConnectionString      
               -ConnectionProviderName 
            >  Update-Database               将挂起的迁移更新到数据库
               -Force
               -ProjectName
               -StartProjectName
               -ConfigurationTypeName
               -ConnectionStringName 
               -ConnectionString 
               -ConnectionProviderName 
               -SourceMigration                只有-Script打开时才有效。指定迁移的名称用作更新的起点。忽略则使用最后一次应用的迁移。
               -TargetMigration                 指定将数据库更新到哪个迁移的名称。
               -Script                                 生成SQL脚本
            >  Get-Migrations                   获取已经应用的迁移                                   
         3.  迁移操作步骤举例:
    
             a.  第一次启用迁移,输入命令: 
    
                  Enable-Migrations -ProjectName DataBaseModel -StartUpProjectName MemberContext -ContextTypeName DataBaseModel.MemberContext.MemberEntities 
                  并敲回车键,然后打开生成的Migrations文件夹中的Configuration.cs文件, 
    
                  把构造方法中的AutomaticMigrationsEnabled = false;改为AutomaticMigrationsEnabled = true;
    
             b.  模型有改动时,输入命令:add-migration update20150508 -ProjectName DataBase -StartUpProjectName Member -Force并敲回车键,创建迁移脚本       
    
                  然后 输入命令:Update-Database -Verbose -ProjectName DataBase -StartUpProjectName Member并敲回车键,执行迁移操作
    
         4.  配置自动迁移
    
              在应用程序的入口方法(函数)里注册自动迁移:
    
              Database.SetInitializer(new MigrateDatabaseToLatestVersion<OrderContext, Configuration>());   
              注意:Configuration.cs生成的是internal sealed class,如果不在启动程序集中,则需要修改成public
    
         5.  脱离visual studio环境做数据库版本迁移,可用migrate.exe,可参考:http://msdn.microsoft.com/zh-cn/data/jj618307
    
    三. 注意事项:
    
         1.  连接字符串不用DBFirst自动生成的那么复杂,采用如下格式即可:
    
              <add name="MemberEntities" connectionString="server=.;database=Member;integrated security=true;"  providerName="System.Data.SqlClient"/>
    
         2.  有挂起的Model改变时,会导致操作不正常,注意操作步骤,必要时清理挂起的迁移。
    
    EF应用CodeFirst模式,数据迁移的基本用法要点摘记
    

      

    var logger = LoggerResolver.Current.Logger;
    var dbContext = applicationContext.DatabaseContext;
    var helper = new DatabaseSchemaHelper(dbContext.Database, logger, dbContext.SqlSyntax);
    helper.CreateTable<Question>(true);
    helper.CreateTable<Option>(true);

    }

  • 相关阅读:
    C#水晶报表的分页统计字段
    ymPrompt消息提示组件js实现
    C#委托学习 原文推荐:http://www.cnblogs.com/warensoft/archive/2010/03/19/1689806.html?login=1#commentform
    C#之winfrom打印图片
    TreeView控件如何设置节点显示与隐藏,主要是用来做后台权限,没有权限的就隐藏,有权限的就显示?
    C#多线程间同步实例 原文:http://blog.csdn.net/zhoufoxcn/article/details/2453803
    C#反射的应用 原文摘自:http://blog.csdn.net/Tsapi/article/details/6234205
    C#编写的winform程序打包方法
    虚拟机下的CentOS环境中安装Node.js和npm
    RequireJS模块化与GruntJS构建
  • 原文地址:https://www.cnblogs.com/hualiu0/p/5025909.html
Copyright © 2020-2023  润新知