添加 table codefirst 迁移 entity framework
add table codefirst migration entity framework
迁移期间未创建新的 table。
迁移本身似乎已创建
public partial class _222 : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "ToDos",
columns: table => new
{
Id = table.Column<string>(nullable: false),
Name = table.Column<string>(nullable: true),
Body = table.Column<string>(nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_ToDos", x => x.Id);
});
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "ToDos");
}
}
但是当我写 Update-Database 时 table 没有创建。
ApplicationDbContext
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
Database.EnsureCreated();
}
public DbSet<ToDo> ToDos { get; set; }
待办事项
public class ToDo
{
[Key]
public string Id { get; set; }
public string Name { get; set; }
public string Body { get; set; }
}
来自包管理器控制台中的错误
Failed executing DbCommand (1ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
CREATE TABLE [AspNetRoles] (
[Id] nvarchar(450) NOT NULL,
[Name] nvarchar(256) NULL,
[NormalizedName] nvarchar(256) NULL,
[ConcurrencyStamp] nvarchar(max) NULL,
CONSTRAINT [PK_AspNetRoles] PRIMARY KEY ([Id])
);
There is already an object named 'AspNetRoles' in the database.
错误信息很清楚。它正在尝试创建一个名为 AspNetRoles 的 table,它已经存在于数据库中。由于这不是您的迁移正在创建的 table,我希望这是需要首先应用的先前迁移。可能此 table 是手动创建的,这就是迁移历史记录显示仍需要应用迁移的原因。如果它是开发数据库,也许您可以删除 table 并允许应用迁移。另一种解决方法是找到适用的迁移并注释掉 Up 方法的内容。不过,您需要检查现有 table 的架构是否正确,以防发生任何更改。
迁移期间未创建新的 table。
迁移本身似乎已创建
public partial class _222 : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "ToDos",
columns: table => new
{
Id = table.Column<string>(nullable: false),
Name = table.Column<string>(nullable: true),
Body = table.Column<string>(nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_ToDos", x => x.Id);
});
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "ToDos");
}
}
但是当我写 Update-Database 时 table 没有创建。
ApplicationDbContext
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
Database.EnsureCreated();
}
public DbSet<ToDo> ToDos { get; set; }
待办事项
public class ToDo
{
[Key]
public string Id { get; set; }
public string Name { get; set; }
public string Body { get; set; }
}
来自包管理器控制台中的错误
Failed executing DbCommand (1ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
CREATE TABLE [AspNetRoles] (
[Id] nvarchar(450) NOT NULL,
[Name] nvarchar(256) NULL,
[NormalizedName] nvarchar(256) NULL,
[ConcurrencyStamp] nvarchar(max) NULL,
CONSTRAINT [PK_AspNetRoles] PRIMARY KEY ([Id])
);
There is already an object named 'AspNetRoles' in the database.
错误信息很清楚。它正在尝试创建一个名为 AspNetRoles 的 table,它已经存在于数据库中。由于这不是您的迁移正在创建的 table,我希望这是需要首先应用的先前迁移。可能此 table 是手动创建的,这就是迁移历史记录显示仍需要应用迁移的原因。如果它是开发数据库,也许您可以删除 table 并允许应用迁移。另一种解决方法是找到适用的迁移并注释掉 Up 方法的内容。不过,您需要检查现有 table 的架构是否正确,以防发生任何更改。