Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Tabela AspNetUSers

Professor, é comum o AspNet Identity criar a tabela com o tamanho dos campos tão grandes desnecessariamente?

A maioria dos campos é nvarchar(max)

Código de criação das tabelas:

CREATE TABLE [dbo].[AspNetUsers]( [Id] nvarchar NOT NULL, [FullName] nvarchar NULL, [Email] nvarchar NULL, [EmailConfirmed] [bit] NOT NULL, [PasswordHash] nvarchar NULL, [SecurityStamp] nvarchar NULL, [PhoneNumber] nvarchar NULL, [PhoneNumberConfirmed] [bit] NOT NULL, [TwoFactorEnabled] [bit] NOT NULL, [LockoutEndDateUtc] [datetime] NULL, [LockoutEnabled] [bit] NOT NULL, [AccessFailedCount] [int] NOT NULL, [UserName] nvarchar NOT NULL, CONSTRAINT [PK_dbo.AspNetUsers] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO

3 respostas
solução!

Olá Jonathan, tudo bom?

A configuração padrão do Identity cria sim os campos com os tamanhos como citou.

Porém é possível e recomendado fazer a alteração conforme sua necessidade.

Segue um exemplo básico:


using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;

namespace WebApplication2.Data
{
    public class ApplicationDbContext : IdentityDbContext
    {
        public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
            : base(options)
        {
        }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
            modelBuilder.Entity<IdentityUser>()
                .Property(u => u.Email)
                .HasMaxLength(25);
        }
    }
}

Muito obrigado, Kelvin.

Isto é padrão do EF, certo?

Iria alterar na mão, bom saber que há como alterar via código

Imagina! :)

Sim, esse conceito pode ser seguido também para a criação/modificação de tabelas das suas demais entidades.