title: Explanation of GetNormalizedUserNameAsync and SetNormalizedUserNameAsync functions in ASP.NET Identity UserStore
body: <p>I am a bit confused as to how I am supposed to implement functions like the following:</p>
  
  <pre><code>GetNormalizedRoleNameAsync(TRole, CancellationToken)
  SetNormalizedRoleNameAsync(TRole, String, CancellationToken)
  GetNormalizedUserNameAsync(TUser, CancellationToken)
  SetNormalizedUserNameAsync(TUser, String, CancellationToken)
  GetUserNameAsync(TUser, CancellationToken)
  SetUserNameAsync(TUser, String, CancellationToken)
  </code></pre>
  
  <p><strong>In the ASP.NET Core CustomIdentityProvider Sample and the Actual ASP.NET Core Identity UserStoreBase class they do the following:</strong></p>
  
  <pre><code>public Task SetNormalizedUserNameAsync(ApplicationUser user, string normalizedName, CancellationToken cancellationToken)
  {
      cancellationToken.ThrowIfCancellationRequested();
      if (user == null) throw new ArgumentNullException(nameof(user));
      if (normalizedName == null) throw new ArgumentNullException(nameof(normalizedName));
  
      user.NormalizedUserName = normalizedName;
      return Task.FromResult&lt;object&gt;(null);
  }
  
  public Task&lt;string&gt; GetUserNameAsync(ApplicationUser user, CancellationToken cancellationToken)
  {
      cancellationToken.ThrowIfCancellationRequested();
      if (user == null) throw new ArgumentNullException(nameof(user));
  
      return Task.FromResult(user.UserName);
  }
  </code></pre>
  
  <p>Are these functions about just simply extracting the Normalized Name from an already populated User object and additionally updating the Normalized Name on an already populated User object. I am not seeing the purpose of these functions can someone explain?</p>
  
  <p>Also do I need to actually persist the NormalizedUserName and NormalizedRoleName in my custom User/Role tables or are they not required?</p>