更新标识列名称后出现错误

问题描述 投票:0回答:0

我正在使用 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")
        );
        }

但是还是一样的错误!

c# abp
© www.soinside.com 2019 - 2024. All rights reserved.