[英]EFCore AlterColumn MaxLength in Code First Migration
使用 Visual Studio 2019 C#。
我对代码优先开发方法很陌生。
我已经制作了一个有效的 ToDo.cs 数据 model 和 ApplicationDbContext.cs。 我运行 PM>add-migration 自动生成下面的数据迁移,然后 PM>database-update 成功将表提交到我的 SQL 服务器。
FILENAME: 20200815211807_AddedToDoTable.cs
using System;
using Microsoft.EntityFrameworkCore.Migrations;
namespace BlazorApp.Data.Migrations
{
public partial class AddedToDoTable : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "ToDoList",
columns: table => new
{
Id = table.Column<int>(nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
Name = table.Column<string>(maxLength: 15, nullable: false),
Status = table.Column<string>(nullable: false),
DueDate = table.Column<DateTime>(nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_ToDoList", x => x.Id);
});
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "ToDoList");
}
}
}
现在我需要将 [Name] 列的字符串长度从 15 更改为 25。因此,我创建了一个新的迁移,如下所示:
using Microsoft.EntityFrameworkCore.Migrations;
namespace BlazorApp.Data.Migrations
{
public partial class ChangeNameLength : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.Sql("ALTER TABLE ToDoList ALTER COLUMN Name nvarchar(25);");
}
protected override void Down(MigrationBuilder migrationBuilder)
{
}
}
}
但是 Package 管理器说:“对象引用未设置为 object 的实例。” 并且不做任何改变。
我究竟做错了什么? 你能帮我理解这个简单的变化吗?
谢谢,杰森
我认为我的问题与我对 Package 管理器控制台的使用有关。
我重新开始使用相同的迁移脚本,一切正常!
PM> add-migration "ChangedNameLength"
Build started...
Build succeeded.
To undo this action, use Remove-Migration.
PM> update-database
Build started...
Build succeeded.
Done.
PM>
为什么不使用正确的迁移语法:
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AlterColumn<string>(
name: "Name",
table: "ToDoList",
maxLength: 25);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.