zoukankan      html  css  js  c++  java
  • 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表删除,将生产环境中的表与模型更新成一致。


  • 相关阅读:
    ShopNum1网店系统:组建电子商务运营团队
    jquery 日期+时间 date & time 插件
    写代码如坐禅:你是哪一类程序员
    杨卫华:新浪微博的架构发展历程
    win7 搜索 在新窗口【打开文件位置】
    架构师应该了解的知识1
    flash cs4 和 flex builder 联合开发
    Div拖动/调整大小实例
    asp.net mvc 2.o 中使用JQuery.uploadify
    jquery 拖动改变div 容器大小
  • 原文地址:https://www.cnblogs.com/littlewrong/p/4783099.html
Copyright © 2011-2022 走看看