如何在 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,请记住这些;
- 更新 PasargadInsuranceDbContext.OnModelCreating 为您的新 属性
配置映射
- 更新 PasargadInsuranceEfCoreEntityExtensionMappings 以扩展 IdentityUser 实体并将新的 属性 添加到迁移中。
- 使用Add-Migration添加新的数据库迁移。
- 运行 .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
如您所知,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,请记住这些;
- 更新 PasargadInsuranceDbContext.OnModelCreating 为您的新 属性 配置映射
- 更新 PasargadInsuranceEfCoreEntityExtensionMappings 以扩展 IdentityUser 实体并将新的 属性 添加到迁移中。
- 使用Add-Migration添加新的数据库迁移。
- 运行 .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