架构师_程序员

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 194|回复: 0

[资料] EntityFramework Core 迁移时 Table 'xxx' already exists 错误

[复制链接]
发表于 2019-11-19 13:01:20
zu
在.net framework 版本,假设已经存在数据库的情况下,可以通过新建一个空的迁移文件来解决。
在EF Core之前对于迁移的命令有很多,当进行迁移出现对象已在数据库中存在时我们通过如何命令即可解决:

  1. Add-Migration Initial -IgnoreChanges
复制代码

使用Code First 迁移更新数据库
https://www.itsvse.com/thread-4827-1-1.html
(出处: 架构师_程序员)
但是在EF Core对于迁移现如今只存在如下两个命令:

  1. dotnet ef migrations add <<migration_name>>
  2. dotnet ef database update
复制代码




当我们第一次进行初始化迁移时,表结构完全生成通过 dotnet ef migration add initial 来初始化表,当下次再进行迁移时因为这样或者那样无意的操作导致出现如下结果

Table 'account' already exists
QQ截图20191119130435.jpg

如下为第一次初始化的迁移文件,如下:

  1. public partial class initial : Migration
  2.     {
  3.         protected override void Up(MigrationBuilder migrationBuilder)
  4.         {
  5.             migrationBuilder.CreateTable(
  6.                 name: "Blog",
  7.                 columns: table => new
  8.                 {
  9.                     Id = table.Column<int>(nullable: false)
  10.                         .Annotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn),
  11.                     Code = table.Column<string>(nullable: false),
  12.                     Count = table.Column<int>(nullable: false),
  13.                     Name = table.Column<string>(nullable: true),
  14.                     Url = table.Column<string>(nullable: true)
  15.                 },
  16.                 constraints: table =>
  17.                 {
  18.                     table.PrimaryKey("PK_Blog", x => x.Id);
  19.                 });

  20.             migrationBuilder.CreateTable(
  21.                 name: "Book",
  22.                 columns: table => new
  23.                 {
  24.                     Id = table.Column<int>(nullable: false)
  25.                         .Annotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn),
  26.                     Name = table.Column<string>(nullable: true)
  27.                 },
  28.                 constraints: table =>
  29.                 {
  30.                     table.PrimaryKey("PK_Book", x => x.Id);
  31.                 });

  32.             migrationBuilder.CreateTable(
  33.                 name: "Category",
  34.                 columns: table => new
  35.                 {
  36.                     Id = table.Column<int>(nullable: false)
  37.                         .Annotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn),
  38.                     Name = table.Column<string>(nullable: true),
  39.                     ProductId = table.Column<int>(nullable: false)
  40.                 },
  41.                 constraints: table =>
  42.                 {
  43.                     table.PrimaryKey("PK_Category", x => x.Id);
  44.                 });

  45.             migrationBuilder.CreateTable(
  46.                 name: "Product",
  47.                 columns: table => new
  48.                 {
  49.                     Id = table.Column<int>(nullable: false)
  50.                         .Annotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn),
  51.                     Code = table.Column<string>(nullable: true),
  52.                     Name = table.Column<string>(nullable: true)
  53.                 },
  54.                 constraints: table =>
  55.                 {
  56.                     table.PrimaryKey("PK_Product", x => x.Id);
  57.                 });

  58.             migrationBuilder.CreateTable(
  59.                 name: "Post",
  60.                 columns: table => new
  61.                 {
  62.                     Id = table.Column<int>(nullable: false)
  63.                         .Annotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn),
  64.                     BlogId = table.Column<int>(nullable: false),
  65.                     Content = table.Column<string>(nullable: true),
  66.                     Title = table.Column<string>(nullable: true)
  67.                 },
  68.                 constraints: table =>
  69.                 {
  70.                     table.PrimaryKey("PK_Post", x => x.Id);
  71.                     table.ForeignKey(
  72.                         name: "FK_Post_Blog_BlogId",
  73.                         column: x => x.BlogId,
  74.                         principalTable: "Blog",
  75.                         principalColumn: "Id",
  76.                         onDelete: ReferentialAction.Cascade);
  77.                 });

  78.             migrationBuilder.CreateTable(
  79.                 name: "ProductCategory",
  80.                 columns: table => new
  81.                 {
  82.                     Id = table.Column<int>(nullable: false)
  83.                         .Annotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn),
  84.                     CategoryId = table.Column<int>(nullable: false),
  85.                     ProductId = table.Column<int>(nullable: false)
  86.                 },
  87.                 constraints: table =>
  88.                 {
  89.                     table.PrimaryKey("PK_ProductCategory", x => x.Id);
  90.                     table.ForeignKey(
  91.                         name: "FK_ProductCategory_Category_CategoryId",
  92.                         column: x => x.CategoryId,
  93.                         principalTable: "Category",
  94.                         principalColumn: "Id",
  95.                         onDelete: ReferentialAction.Cascade);
  96.                     table.ForeignKey(
  97.                         name: "FK_ProductCategory_Product_ProductId",
  98.                         column: x => x.ProductId,
  99.                         principalTable: "Product",
  100.                         principalColumn: "Id",
  101.                         onDelete: ReferentialAction.Cascade);
  102.                 });

  103.             migrationBuilder.CreateIndex(
  104.                 name: "IX_Post_BlogId",
  105.                 table: "Post",
  106.                 column: "BlogId");

  107.             migrationBuilder.CreateIndex(
  108.                 name: "IX_ProductCategory_CategoryId",
  109.                 table: "ProductCategory",
  110.                 column: "CategoryId");

  111.             migrationBuilder.CreateIndex(
  112.                 name: "IX_ProductCategory_ProductId",
  113.                 table: "ProductCategory",
  114.                 column: "ProductId");
  115.         }

  116.         protected override void Down(MigrationBuilder migrationBuilder)
  117.         {
  118.             migrationBuilder.DropTable(
  119.                 name: "Book");

  120.             migrationBuilder.DropTable(
  121.                 name: "Post");

  122.             migrationBuilder.DropTable(
  123.                 name: "ProductCategory");

  124.             migrationBuilder.DropTable(
  125.                 name: "Blog");

  126.             migrationBuilder.DropTable(
  127.                 name: "Category");

  128.             migrationBuilder.DropTable(
  129.                 name: "Product");
  130.         }
复制代码
此时为了解决上述问题前提是最初的迁移类文件还在,我们需要将Up方法里面的数据全部删除而对于Down方法里面的数据可删除可不删除

  1. public partial class initial : Migration
  2.     {
  3.         protected override void Up(MigrationBuilder migrationBuilder)
  4.         {}

  5.         protected override void Down(MigrationBuilder migrationBuilder)
  6.         {
  7.               ........   
  8.         }
  9.     }
复制代码






上一篇:特意花钱注册,结果要下的资源根本是骗人的
下一篇:烁石物语-Sparklite-v1.2.16
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|Archiver|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2020-1-18 00:32

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表