zoukankan      html  css  js  c++  java
  • 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命令。这样就完成了迁移的初始化。完成这一步后,以后再修改实体就能顺利的使用迁移命令了。

  • 相关阅读:
    leetcode-mid-array-5. Longest Palindromic Substring
    leetcode-mid-array-334 Increasing Triplet Subsequence-NO
    leetcode-mid-array-3 Longest Substring Without Repeating Characters
    leetcode-mid-array-49 Group Anagrams
    leetcode-mid-array-73 set matrix zeros
    leetcode-mid-array-31 three sum-NO
    ANOVA-方差分析和单尾方差分析
    MTLD -词汇复杂度的指标
    shell脚本-2
    from __future__ import
  • 原文地址:https://www.cnblogs.com/jidanfan/p/11517390.html
Copyright © 2011-2022 走看看