Почему идентификатор пользователя идентификатора asp.net является строкой? - программирование

Почему идентификатор пользователя идентификатора asp.net является строкой?

Я хочу использовать тип System.Guid как id для всех моих таблиц в asp.net web api application. Но я также использую Asp.net Identity, который использует идентификатор строкового типа (также для хранения указаний). Поэтому мне интересно, почему он использует строковый идентификатор вместо System.Guid по умолчанию? И какой лучший выбор использовать во всем приложении - Guid id или string-guid id? В случае использования строки - что является самым правильным и надежным способом генерации нового кода id или в базе данных?

4b9b3361

Ответ 1

С ASP.NET Core у вас есть очень простой способ указать тип данных, который вы хотите использовать для моделей Identity.

Первый шаг, переопределить классы идентичности из <string> to < тип данных, который вы хотите > :

public class ApplicationUser : IdentityUser<Guid>
{
}

public class ApplicationRole : IdentityRole<Guid>
{
}

Объявите свой контекст базы данных, используя ваши классы и тип данных, которые вы хотите:

public class ApplicationDbContext : IdentityDbContext<ApplicationUser, ApplicationRole, Guid>
    {
        public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
            : base(options)
        {
        }

        protected override void OnModelCreating(ModelBuilder builder)
        {
            base.OnModelCreating(builder);
            // Customize the ASP.NET Identity model and override the defaults if needed.
            // For example, you can rename the ASP.NET Identity table names and more.
            // Add your customizations after calling base.OnModelCreating(builder);
        }
    }

И в вашем классе запуска объявите службу идентификации с помощью своих моделей и объявите тип данных, который вы хотите для первичных ключей:

services.AddIdentity<ApplicationUser, ApplicationRole>()
            .AddEntityFrameworkStores<ApplicationDbContext, Guid>()
            .AddDefaultTokenProviders();

Ответ 2

В зависимости от того, какую версию аутентификации ASP.Net вы используете, в базе данных ASP.NET Identity v2 следует хранить ее как uniqueidentifier (Guid) в таблице AspNetUsers. В более предыдущих версиях он будет хранить идентификатор пользователя как int в таблице webpages_Membership.

Я считаю, что он начертал его как строку, поэтому он может быть любым типом данных, который вам нравится под капотом, и тогда он может быть внесен в ваш код по мере необходимости.