code first迁移和部署

从“工具”菜单中,选择“NuGet 包管理器” > “包管理器控制台”。
在PM>提示符处输入以下命令:

  enable-migrations    add-migration InitialCreate

执行第一次迁移

当您执行add-migration命令时,迁移生成的代码,将从头开始创建数据库。 此代码也是在迁移文件夹中,在名为的文件<时间戳>_InitialCreate.cs。 Up方法InitialCreate类创建与数据模型实体集相对应的数据库表和Down方法中删除它们。

  public partial class InitialCreate : DbMigration
    {
    public override void Up()
     {
    CreateTable(
        "dbo.Course",
        c => new
            {
                CourseID = c.Int(nullable: false),
                Title = c.String(),
                Credits = c.Int(nullable: false),
            })
        .PrimaryKey(t => t.CourseID);
    
    CreateTable(
        "dbo.Enrollment",
        c => new
            {
                EnrollmentID = c.Int(nullable: false, identity: true),
                CourseID = c.Int(nullable: false),
                StudentID = c.Int(nullable: false),
                Grade = c.Int(),
            })
        .PrimaryKey(t => t.EnrollmentID)
        .ForeignKey("dbo.Course", t => t.CourseID, cascadeDelete: true)
        .ForeignKey("dbo.Student", t => t.StudentID, cascadeDelete: true)
        .Index(t => t.CourseID)
        .Index(t => t.StudentID);        
    CreateTable(
        "dbo.Student",
        c => new
            {
                ID = c.Int(nullable: false, identity: true),
                LastName = c.String(),
                FirstMidName = c.String(),
                EnrollmentDate = c.DateTime(nullable: false),
            })
        .PrimaryKey(t => t.ID);        
   }    
    public override void Down()
      {
     DropForeignKey("dbo.Enrollment", "StudentID", "dbo.Student");
    DropForeignKey("dbo.Enrollment", "CourseID", "dbo.Course");
    DropIndex("dbo.Enrollment", new[] { "StudentID" });
    DropIndex("dbo.Enrollment", new[] { "CourseID" });
    DropTable("dbo.Student");
    DropTable("dbo.Enrollment");
    DropTable("dbo.Course");
      }
 }

迁移调用 Up 方法为迁移实现数据模型更改。 输入用于回退更新的命令时,迁移调用 Down 方法。
这是你输入时创建的初始迁移add-migration InitialCreate命令。 参数 (InitialCreate在示例中) 用于文件命名,可以是任何所需内容; 通常选择的单词或短语汇总了迁移做什么。 例如,你可能会命名为更高版本迁移"AddDepartmentTable"。
如果创建初始迁移时已存在数据库,则会生成数据库创建代码,但此代码不必运行,因为数据库已与数据库模型相匹配。 将应用部署到其中尚不存在数据库的其他环境时,此代码将运行以创建数据库,因此最好提前进行测试。 这就是为什么更改连接字符串前面部分中的数据库的名称—以便迁移可以创建一个从零开始的新。
在中程序包管理器控制台窗口中,输入以下命令:
update-database
update-database命令将运行Up方法来创建数据库,然后将它运行Seed方法来填充该数据库。 相同的过程将自动运行在生产环境中部署应用程序之后, 您将看到以下部分中。
使用服务器资源管理器一样在第一个教程中,检查数据库并运行应用程序以验证一切仍然正常相同像以前一样。

posted @ 2019-02-27 10:47  泽哥的学习笔记  阅读(286)  评论(0编辑  收藏  举报