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

O usuariodb não foi criado aplicação sem erro

using Microsoft.AspNetCore.Identity; using Microsoft.EntityFrameworkCore; using UsuariosApi.Data; using UsuariosApi.Models;

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.

var connString = builder.Configuration.GetConnectionString("UsuarioConnection");

builder.Services.AddDbContext (opts => { opts.UseMySql(connString, ServerVersion.AutoDetect (connString)); });

builder.Services .AddIdentity<Usuario, IdentityRole>() .AddEntityFrameworkStores() .AddDefaultTokenProviders();

builder.Services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies());

builder.Services.AddControllers(); // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen();

var app = builder.Build();

// Configure the HTTP request pipeline. if (app.Environment.IsDevelopment()) { app.UseSwagger(); app.UseSwaggerUI(); }

app.UseHttpsRedirection();

app.UseAuthorization();

app.MapControllers();

app.Run();

--------------------------------------------------------------------------------------------------------------

using Microsoft.AspNetCore.Identity.EntityFrameworkCore;

using Microsoft.EntityFrameworkCore; using UsuariosApi.Models;

namespace UsuariosApi.Data { public class UsuarioDbContext : IdentityDbContext { public UsuarioDbContext(DbContextOptions opts) : base(opts) { } } }

----------------------------------------------------------------------------------------



using AutoMapper;

using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; using UsuariosApi.Data.Dtos; using UsuariosApi.Models;

public class UsuarioController : ControllerBase { private IMapper _mapper; private UserManager _userManager;

public UsuarioController(IMapper mapper, UserManager<Usuario> userManager)
{
    _mapper = mapper;
    _userManager = userManager;
}

[HttpPost]
public async Task<IActionResult> CadastraUsuario
    (CreateUsuarioDto dto)
{
    Usuario usuario = _mapper.Map<Usuario>(dto);

   IdentityResult resultado = await _userManager.CreateAsync(usuario, dto.Password);

    if(resultado.Succeeded) return Ok("Falha ao cadastrar usuário!");

    throw new ApplicationException("Falha ao cadastrar usuário!");
}

}

----------------------------------------------------------------------------

using System;

using Microsoft.AspNetCore.Identity;

namespace UsuariosApi.Models { public class Usuario : IdentityUser { public DateTime DataNascimento { get; set; } public Usuario() : base() { } } }

2 respostas
solução!

Olá, Adriano! Pelo que entendi, você está tentando criar um usuário no banco de dados, mas o banco de dados 'usuariodb' não está sendo criado, mesmo sem ocorrer nenhum erro na aplicação. Vamos tentar resolver isso juntos.

Primeiramente, verifique se a string de conexão com o MySQL está correta no seu arquivo de configuração (geralmente, o appsettings.json). A string de conexão deve apontar corretamente para o servidor MySQL que você está usando.

Além disso, é importante garantir que você tenha executado as migrações do Entity Framework. No seu caso, parece que você está usando o comando Add-Migration "Criando Usuario" para criar uma migração. No entanto, criar a migração é apenas o primeiro passo. Você também precisa aplicar essa migração ao banco de dados. Para fazer isso, você pode usar o comando Update-Database no console do gerenciador de pacotes, é esse comando que "empurra" as modificações para o banco.

Aqui está um exemplo de como esses comandos podem ser usados:

Add-Migration "Criando Usuario"
Update-Database

Esses comandos devem ser executados no console do gerenciador de pacotes no Visual Studio. O comando Add-Migration cria uma migração que inclui todas as alterações feitas no seu modelo desde a última migração. O comando Update-Database aplica todas as migrações pendentes ao banco de dados, alterando o esquema do banco de dados para corresponder ao seu modelo.

Se você já fez isso e o problema persiste, pode ser útil verificar se o MySQL está configurado para permitir a criação automática de bancos de dados. Além disso, verifique se o usuário especificado na string de conexão tem permissões suficientes para criar bancos de dados.

Espero ter ajudado e bons estudos!

Bom dia, Renan. Funcionou acho que foi o comando "Update-Database" que faltou. Muito obrigado.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software