我正在尝试向数据库中的现有表添加新列,我在类中指定新字段并运行Add-Migration命令,但每次使用CreateTable方法而不是AddColumn创建整个表的迁移类时。下面是类和生成的迁移类代码。
public class UserSetup
{
public int Id { get; set; }
public string Name { get; set; }
public bool Age{ get; set; } // New Field Added
}
但是对于新字段,它正在为全表创建迁移类,如下所示:
public partial class AddUserSetup_1 : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "UserSetup",
columns: table => new
{
Id = table.Column<int>(nullable: false)
.Annotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn),
Name= table.Column<string>(nullable: false),
Age= table.Column<int>(nullable: false),
},
constraints: table =>
{
table.PrimaryKey("PK_UserSetup", x => x.Id);
});
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "UserSetup");
}
}
同样在Add-Migration中,它给出了以下错误,但是甚至创建了迁移类。
System.UnauthorizedAccessException:访问路径&#39; C:\ Projects \ PSM \ Portal \ src \ Portal \ Migrations \ ApplicationDbContextModelSnapshot.cs&#39;被拒绝。
答案 0 :(得分:0)
评论您的新年龄字段
//public bool Age{ get;放; } // 添加新字段
打开“服务器资源管理器”窗口并确保您可以在“数据连接”中看到您的表
在包管理器控制台中运行:
现在 EF 应该识别您的数据库 现在取消注释您的新“年龄”字段
在包管理器控制台中运行:
评论: 当您编写“Enable-Migrations”时,您可能需要像这样添加 -Force:
Enable-Migrations -Force
答案 1 :(得分:-1)
如果您正在使用TFS,请确保签出以便编辑您的&#39; ApplicationDbContextModelSnapshot.cs&#39;文件。它会工作得很好!