• EntityFramework Core Code First 已有数据库


      问题场景:我已经有一个数据库,想用 EF core Code First,怎么办?

      首先,可以参考微软的API文档:通过现有数据库在 ASP.NET Core 上开始使用 EF Core, 这一步可以将数据库表转换成对象,并生成DBContext。这时候只要在Startup中配置DBContext,就能够访问数据库了。

      接下来,我们根据业务需求需要修改表,按照Code First逻辑,只需要修改对应的实体,然后使用 Add-Migration命令就可以了。这时候,我们会发现迁移命令生成的文件竟然包含了建表的语句

        public partial class init : Migration
        {
            protected override void Up(MigrationBuilder migrationBuilder)
            {
                migrationBuilder.CreateTable(
                   name: "AspNetRoles",
                   columns: table => new
                   {
                       Id = table.Column<string>(nullable: false),
                       Name = table.Column<string>(maxLength: 256, nullable: true),
                       NormalizedName = table.Column<string>(maxLength: 256, nullable: true),
                       ConcurrencyStamp = table.Column<string>(nullable: true)
                   },
                   constraints: table =>
                   {
                       table.PrimaryKey("PK_AspNetRoles", x => x.Id);
                   });
            .... }

    如果直接执行 update-database 命令的话会发现执行会报错。那怎么办呢,是不是已有数据库的情况下再也不能用Code First了?

    当然不是啦,经过测试,只需要按一下方法,就能有效的把实体的更改更新到数据库了。

    首选,需要确保目前的实体和数据库表一致,接着执行迁移命令 Add-Migration init。

    接着,在Migrations目录中找到生成的 xxx_init.cs 文件,进去把 Up() Down()方法中的代码都去掉,只留下空方法体。

    接着,执行 Update-Database命令。这样就完成了迁移的初始化。完成这一步后,以后再修改实体就能顺利的使用迁移命令了。

  • 相关阅读:
    2017.3.22上午
    2017.3.21下午
    2017.3.21上午
    git上传到阿里云code
    spring+ibatis整合
    Aop资料整理
    java加密算法之AES小记
    单例的八种写法:推荐静态内部类和枚举
    dubbo入门示例
    自定义注解判空简单示例
  • 原文地址:https://www.cnblogs.com/jidanfan/p/11517390.html
Copyright © 2020-2023  润新知