diff --git a/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityRole.cs b/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityRole.cs
index fe6af2e7f6..7a494ddae5 100644
--- a/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityRole.cs
+++ b/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityRole.cs
@@ -81,13 +81,9 @@ namespace Volo.Abp.Identity
             Claims.RemoveAll(c => c.ClaimType == claim.Type && c.ClaimValue == claim.Value);
         }
 
-        /// 
-        /// Returns the name of the role.
-        /// 
-        /// The name of the role.
         public override string ToString()
         {
-            return Name;
+            return $"{base.ToString()}, Name = {Name}";
         }
     }
 }
diff --git a/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUser.cs b/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUser.cs
index 1a6583b45e..fd61f5c809 100644
--- a/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUser.cs
+++ b/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUser.cs
@@ -10,8 +10,6 @@ using Volo.Abp.Guids;
 
 namespace Volo.Abp.Identity
 {
-    //Add Name and Surname properties?
-
     public class IdentityUser : AggregateRoot, IHasConcurrencyStamp
     {
         /// 
@@ -134,7 +132,7 @@ namespace Volo.Abp.Identity
             Tokens = new Collection();
         }
 
-        public void AddRole(IGuidGenerator guidGenerator, Guid roleId)
+        public void AddRole(Guid roleId)
         {
             Check.NotNull(roleId, nameof(roleId));
 
@@ -143,7 +141,7 @@ namespace Volo.Abp.Identity
                 return;
             }
 
-            Roles.Add(new IdentityUserRole(guidGenerator.Create(), Id, roleId));
+            Roles.Add(new IdentityUserRole(Id, roleId));
         }
 
         public void RemoveRole(Guid roleId)
diff --git a/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserRole.cs b/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserRole.cs
index 2740b67323..daf1f4af6d 100644
--- a/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserRole.cs
+++ b/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserRole.cs
@@ -6,7 +6,7 @@ namespace Volo.Abp.Identity
     /// 
     /// Represents the link between a user and a role.
     /// 
-    public class IdentityUserRole : Entity
+    public class IdentityUserRole : Entity
     {
         /// 
         /// Gets or sets the primary key of the user that is linked to a role.
@@ -23,9 +23,8 @@ namespace Volo.Abp.Identity
             
         }
 
-        protected internal IdentityUserRole(Guid id, Guid userId, Guid roleId)
+        protected internal IdentityUserRole(Guid userId, Guid roleId)
         {
-            Id = id;
             UserId = userId;
             RoleId = roleId;
         }
diff --git a/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserStore.cs b/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserStore.cs
index af2b2ab20f..bb3d9c86c5 100644
--- a/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserStore.cs
+++ b/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserStore.cs
@@ -335,7 +335,7 @@ namespace Volo.Abp.Identity
 
             await _userRepository.EnsureCollectionLoadedAsync(user, u => u.Roles, cancellationToken);
 
-            user.AddRole(_guidGenerator, role.Id);
+            user.AddRole(role.Id);
         }
 
         /// 
diff --git a/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/IdentityDbContextModelBuilderExtensions.cs b/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/IdentityDbContextModelBuilderExtensions.cs
index 98fbfd55f5..736ddcc214 100644
--- a/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/IdentityDbContextModelBuilderExtensions.cs
+++ b/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/IdentityDbContextModelBuilderExtensions.cs
@@ -76,10 +76,11 @@ namespace Volo.Abp.Identity.EntityFrameworkCore
             {
                 b.ToTable(tablePrefix + "UserRoles", schema);
 
+                b.HasKey(ur => new {ur.UserId, ur.RoleId});
+
                 b.HasOne().WithMany().HasForeignKey(ur => ur.RoleId).IsRequired();
                 b.HasOne().WithMany(u => u.Roles).HasForeignKey(ur => ur.UserId).IsRequired();
 
-                b.HasIndex(ur => new { ur.UserId, ur.RoleId });
                 b.HasIndex(ur => new { ur.RoleId, ur.UserId });
             });
 
diff --git a/test/Volo.Abp.Identity.Application.Tests/Volo/Abp/Identity/AbpIdentityTestDataBuilder.cs b/test/Volo.Abp.Identity.Application.Tests/Volo/Abp/Identity/AbpIdentityTestDataBuilder.cs
index 931fdf3f87..e321d107ed 100644
--- a/test/Volo.Abp.Identity.Application.Tests/Volo/Abp/Identity/AbpIdentityTestDataBuilder.cs
+++ b/test/Volo.Abp.Identity.Application.Tests/Volo/Abp/Identity/AbpIdentityTestDataBuilder.cs
@@ -43,8 +43,8 @@ namespace Volo.Abp.Identity
         private void AddUsers()
         {
             var john = new IdentityUser(_guidGenerator.Create(), "john.nash");
-            john.Roles.Add(new IdentityUserRole(_guidGenerator.Create(), john.Id, _moderator.Id));
-            john.Roles.Add(new IdentityUserRole(_guidGenerator.Create(), john.Id, _supporterRole.Id));
+            john.AddRole(_moderator.Id);
+            john.AddRole(_supporterRole.Id);
             _userRepository.Insert(john);
         }
     }