我正在使用 Angular UI 开发 ABP 框架 7.1 版
我在我的 dbcontext 中重命名并设置为需要两个 identityUser 列:
builder.Entity<IdentityUser>(b =>
{
b.Property(x => x.Name).IsRequired().HasColumnName("FirstName");
b.Property(x => x.Surname).IsRequired().HasColumnName("LastName");
});
我创建了迁移并更新了数据库。它工作正常,现在我的数据库有那个列名。
但是当我运行数据播种器时,我得到一个错误:
不能将 null 插入列名 LastName,表 AbpUsers, 列不允许空值。
所以我尝试将我的身份播种机创建为:
[Dependency(ReplaceServices = true)]
public class CustomIdentityDataSeederContributor : IdentityDataSeeder
{
public CustomIdentityDataSeederContributor(
IUnitOfWorkManager unitOfWorkManager,
IGuidGenerator guidGenerator,
IIdentityRoleRepository roleRepository,
IIdentityUserRepository userRepository,
ILookupNormalizer lookupNormalizer,
IdentityUserManager userManager,
IdentityRoleManager roleManager,
ICurrentTenant currentTenant,
IOptions<IdentityOptions> identityOptions,
IdentityUserManager identityUserManager)
: base(guidGenerator, roleRepository, userRepository, lookupNormalizer, userManager, roleManager, currentTenant, identityOptions)
{
}
public override async Task<IdentityDataSeedResult> SeedAsync(string adminEmail, string adminPassword, Guid? tenantId = null)
{
var result = new IdentityDataSeedResult();
Check.NotNullOrWhiteSpace(adminEmail, nameof(adminEmail));
Check.NotNullOrWhiteSpace(adminPassword, nameof(adminPassword));
string adminUserName = "custom";
if (adminEmail == "[email protected]")
{
return result;
}
if (tenantId != Guid.Empty && tenantId != null)
{
adminUserName = "custom2";
if (adminEmail == "[email protected]")
{
adminEmail = "[email protected]";
}
}
using (CurrentTenant.Change(tenantId))
{
//"admin" user
var adminUser = await UserRepository.FindByNormalizedUserNameAsync(
LookupNormalizer.NormalizeName(adminUserName)
);
if (adminUser != null)
{
return result;
}
adminUser = new IdentityUser(
GuidGenerator.Create(),
adminUserName,
adminEmail,
tenantId
)
{
//This should be first name and lastname
Name = adminUserName
Surname = "surname"
};
(await UserManager.CreateAsync(adminUser, adminPassword)).CheckErrors();
result.CreatedAdminUser = true;
//"admin" role
const string adminRoleName = "admin";
var adminRole = await RoleRepository.FindByNormalizedNameAsync(LookupNormalizer.NormalizeName(adminRoleName));
if (adminRole == null)
{
adminRole = new IdentityRole(
GuidGenerator.Create(),
adminRoleName,
tenantId
)
{
IsStatic = true,
IsPublic = true
};
(await RoleManager.CreateAsync(adminRole)).CheckErrors();
result.CreatedAdminRole = true;
}
(await UserManager.AddToRoleAsync(adminUser, adminRoleName)).CheckErrors();
return result;
}
}
可以看到,IdentityUser的列名还是一样的:
{
Name = adminUserName,
Surname = "surname"
};
而不是我的新列名称,所以 ABP
IdentityUser
类中的属性名称没有改变。
我需要做什么来解决这个问题?最好的问候
--更新--
我在 MigrationService 类上添加了属性 LastName 为:
private async Task SeedDataAsync(Tenant tenant = null)
{
Logger.LogInformation($"Executing {(tenant == null ? "host" : tenant.Name + " tenant")} database seed...");
await _dataSeeder.SeedAsync(new DataSeedContext(tenant?.Id)
.WithProperty(IdentityDataSeedContributor.AdminEmailPropertyName, IdentityDataSeedContributor.AdminEmailDefaultValue)
.WithProperty(IdentityDataSeedContributor.AdminPasswordPropertyName, IdentityDataSeedContributor.AdminPasswordDefaultValue)
.WithProperty("LastName", "Test")
);
}
但是还是一样的错误!