• CodeFirst迁移注意点


    Context构造函数
    不检查__MigrationHistory 取消当数据库模型发生改变时删除当前数据库重建新数据库的设置。
    Database.SetInitializer<Context>(null);
    重新创建数据库
    Database.SetInitializer(new DropCreateDatabaseIfModelChanges<PortalContext>()); 
    重建数据库运行,生产环境此法严禁使用。


    迁移方法1:
    AutomaticMigrationsEnabled=true;自动迁移
    Enable-Migrations 启用迁移
    Add-Migration 为挂起的Model变化添加迁移脚本
    Update-Database 将挂起的迁移更新到数据库
    Update-Database -Verbose 将模型更新到数据库中并显示更新脚本,将更新脚本复制下来在生产环境中运行
    Get-Migrations 获取已经应用的迁移


    AutomaticMigrationsEnabled=false;非自动迁移
    Enable-Migrations [-ContextTypeName <String>] [-EnableAutomaticMigrations] [-ProjectName <String>] [-StartUpProjectName <String>] [-ConnectionStringName <String>] [-Force] [<CommonParameters>]
    ContextTypeName:项目继承自DBContext的类名字。
    EnableAutomaticMigrations:开启自动迁移。
    ProjectName:存放DBContext类的项目名称。
    StartUpProjectName:解决方案中启动项目的名称,作用是调用该项目下的连接字符串。
    ConnectionStringName:连接字符串名称
    上面五个参数是解决问题必须的,其它的无关紧要。
    例如:
    Enable-Migrations -ContextTypeName "MVCCodeFirst.BlogEntities" -ProjectName "MVCCodeFirst" -StartUpProjectName "MVCCodeFirst" -ConnectionStringName "BlogEntities" -Verbose
    依次填好之后,问题解决。
    同样的在Add-Migration、Update-Database的时候也需要填写相应的参数。否则会出现同样错误。
    例如:
    Add-Migration -Name "EditCST_DevicePhoto"  -ProjectName "DBAccessLib" -StartUpProjectName "WebSite" -ConnectionStringName "TJSSDBContext" -Verbose
    Update-Database -Script -ProjectName "DBAccessLib" -StartUpProjectName "WebSite" -ConnectionStringName "TJSSDBContext"  -Verbose


    迁移方法2:
    生产环境中__MigrationHistory表删除,将生产环境中的表与模型更新成一致。


  • 相关阅读:
    Servlet编程寄语
    filter常用功能
    Javascript的自动、定时执行和取消
    CentOS 5安装GIT的基本命令
    EF调用执行Oracle中序列
    WCF使用IIS发布服务的配置
    linux 自学系列:debian更新软件列表、更改源
    shell编程笔记五:select
    linux 自学系列: 改IP地址,主机名及DNS
    shell编程笔记四:case in
  • 原文地址:https://www.cnblogs.com/littlewrong/p/4783099.html
Copyright © 2020-2023  润新知