Open Closed

There is no such an entity. Entity type: Volo.Abp.Identity.IdentityUser, id #7965


User avatar
0
Repunjay_TASC created
  • ABP Framework version: 7.4.2
  • UI Type: Angular
  • Database System: EF Core (PostgreSQL.)
  • Tiered (for MVC) or Auth Server Separated (for Angular): yes
  • Exception message and full stack trace:
  • Steps to reproduce the issue:
public async Task<bool> CreateAsync(IdentityUserCreateDto input, Guid tenantId)
 {
 try
 {
 var newUserName = await GetUniqueUserNameAsync(input.Name.Trim(), input.Surname.Trim());
 var user = new IdentityUser(\_guidGenerator.Create(), newUserName.Trim(), input.Email, tenantId);

 var creationResult = await \_identityUserManager.CreateAsync(user, input.Password.Trim());
 creationResult.CheckErrors();

 await \_identityUserManager.SetEmailAsync(user, input.Email.Trim());
 await \_identityUserManager.SetPhoneNumberAsync(user, input.PhoneNumber.Trim());

 user.Name = input.Name.Trim();
 user.Surname = input.Surname.Trim();

 var claimsToAdd = new List\<Claim>
 {
 new Claim(ClaimTypes.Email, input.Email.Trim()),
 };
 await \_identityUserManager.AddClaimsAsync(user, claimsToAdd);
 await \_unitOfWorkManager.Current.SaveChangesAsync();

 await assignRoles(input, user);

 var userDetails = await \_identityUserManager.GetByIdAsync(user.Id);
 if (userDetails != null)
 {
 userDetails.SetProperty("Status", 1);
 userDetails.SetProperty("Language", "en");
 }
 await \_unitOfWorkManager.Current.SaveChangesAsync();
 }
 catch (Exception ex)
 {
 }
 }

<br> After successfully adding the user to the database, I encountered an error when executing the line var userDetails = await _identityUserManager.GetByIdAsync(user.Id);. I have verified that the user was added to the database and that the user ID is present and correct.

Please find the attachment for your refence :- Error :-

DB:-


7 Answer(s)
  • User Avatar
    0
    liangshiwei created
    Support Team Fullstack Developer

    Hi,

    you can try to create a new uow to create a user.

    for example:

    Guid userId;
    using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
    {
        var newUserName = await GetUniqueUserNameAsync(input.Name.Trim(), input.Surname.Trim());
        var user = new IdentityUser(_guidGenerator.Create(), newUserName.Trim(), input.Email, tenantId);
    
        var creationResult = await _identityUserManager.CreateAsync(user, input.Password.Trim());
     creationResult.CheckErrors();
    
        await _identityUserManager.SetEmailAsync(user, input.Email.Trim());
        await _identityUserManager.SetPhoneNumberAsync(user, input.PhoneNumber.Trim());
    
        user.Name = input.Name.Trim();
        user.Surname = input.Surname.Trim();
    
        ......
        
        userId = user.Id;
        await uow.CompleteAsync();
    }
    
    var userDetails = await _identityUserManager.GetByIdAsync(userId);
    
  • User Avatar
    0
    Repunjay_TASC created

    Hi,

    you can try to create a new uow to create a user.

    for example:

    Guid userId; 
    using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true)) 
    { 
        var newUserName = await GetUniqueUserNameAsync(input.Name.Trim(), input.Surname.Trim()); 
        var user = new IdentityUser(_guidGenerator.Create(), newUserName.Trim(), input.Email, tenantId); 
     
        var creationResult = await _identityUserManager.CreateAsync(user, input.Password.Trim()); 
     creationResult.CheckErrors(); 
     
        await _identityUserManager.SetEmailAsync(user, input.Email.Trim()); 
        await _identityUserManager.SetPhoneNumberAsync(user, input.PhoneNumber.Trim()); 
     
        user.Name = input.Name.Trim(); 
        user.Surname = input.Surname.Trim(); 
     
        ...... 
         
        userId = user.Id; 
        await uow.CompleteAsync(); 
    } 
     
    var userDetails = await _identityUserManager.GetByIdAsync(userId); 
    

    I used above code, But still facing same issue. I've created a class file inside the shared folder and am calling this method from the app service. Since we have a requirement to make this method common, it should be accessible to everyone.

  • User Avatar
    0
    liangshiwei created
    Support Team Fullstack Developer

    Could you share a minimal reproduceible project with me? i will check it.

    shiwei.liang@volosoft.com

  • User Avatar
    0
    Repunjay_TASC created

    My project is very large, and due to policy restrictions, it's not feasible to share the code. Can you suggest an alternative solution?

  • User Avatar
    0
    liangshiwei created
    Support Team Fullstack Developer

    Hi,

    you can use a new project to reproduce the problem.

  • User Avatar
    0
    Repunjay_TASC created

    ok let me try

  • User Avatar
    0
    liangshiwei created
    Support Team Fullstack Developer

    okay

Made with ❤️ on ABP v9.0.0-preview Updated on September 25, 2024, 05:13