如何在 asp 样板中的现有 table 中添加列?

How to add Column in existing table in asp Boilerplate?

如您所知,Boilerplate 不给实体 classes 添加列,我想在 table 中添加名为 (AbpUser) 的列。我尝试在 Migrations 中创建一个 class,如下所示

public partial class AddRatingMig : DbMigration
{
    public override void Up()
    {
        AddColumn("dbo.AbpUsers", "UserType", c => c.String());
    }

    public override void Down()
    {
        DropColumn("dbo.AbpUsers", "UserType");
    }
}

然后在Pm控制台运行命令Update-Database .但没有成功。如您所知,Boilerplate 不提供实体 classes 来编辑列。请帮忙提前致谢

这个问题的答案是像这样扩展 AbpUser

public class User : AbpUser<User> 
{ 
    public string SpecialTitle { get; set; } 
}

并添加迁移 UpdatedUserWithSpecialTitle 然后更新数据库

这是正确的方法

public partial class AddRatingMig : DbMigration
 {
    public override void Up(MigrationBuilder migrationBuilder)
  {
    migrationBuilder.AddColumn<string>(
      name: "UserType",
      table:"AbpUsers",
      nullable:true
      );
  }

    public override void Down(MigrationBuilder migrationBuilder)
      {
        migrationBuilder.DropColumn(
        name:"UserType",
        table:"dbo.AbpUsers"
        );
      }
}

因此使用以下代码更新数据库:update-database

注意:

确保您已正确添加迁移: add-migration migration_name

我在 abp.io 框架中遇到了同样的问题,将新的 属性、“PICUstomerId” 添加到 AbpUser 实体并将其迁移到数据库。

以下是abp.io的评论:

在此处添加您自己的属性。示例:

public string MyProperty { 得到;放; }
如果您添加 属性 并使用 EF Core,请记住这些;

  1. 更新 PasargadInsuranceDbContext.OnModelCreating 为您的新 属性
  2. 配置映射
  3. 更新 PasargadInsuranceEfCoreEntityExtensionMappings 以扩展 IdentityUser 实体并将新的 属性 添加到迁移中。
  4. 使用Add-Migration添加新的数据库迁移。
  5. 运行 .DbMigrator 项目(或使用 Update-Database 命令)将架构更改应用于数据库。

最后 add-migration 你的解决方案然后 update-database

1. Add your own properties here

2. Update PasargadInsuranceDbContext.OnModelCreating

3. Update PasargadInsuranceEfCoreEntityExtensionMappings to extend theIdentityUser entity

4. And finally after update-databse, I saw my new property in database