Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Unable to create an object of type 'FilmeContext'. For the different patterns supported at design time, see https...

PessoALL,

Acho que o Sr. Vosso Excelentíssimo Magnânimo Iluministro Entity framework tem alguma birra comigo, pois sempre que vou usá-lo ele dá problema... acho que começou a dar 'bug' quando eu chamei o EF de "wizard fuleiro para quem tem preguiça de programar ADO", mas foi de zueira, tá legal? E isso já faz tempo! Não foi sério... KKKKK!!!

Bom, como diz o Saitama: "- Chega de brincadeira, então...". Eu não consigo resolver o seguinte problema:

Tem alguma coisa errada no meu 'FilmeContext'... Tentei fazer de duas formas:


PM> Add-Migration CriandoTabelaDeFilme

Build started...

Build succeeded.

Unable to create an object of type 'FilmeContext'. For the different patterns supported at design time, see https://go.microsoft.com/fwlink/?linkid=851728

Não foi possível criar um objeto do tipo 'FilmeContext'. Para os diferentes padrões com suporte em tempo de design, consulte https://go.microsoft.com/fwlink/?linkid=851728


PM> dotnet ef database update

Build started...

Build succeeded.

Unable to create an object of type 'FilmeContext'. For the different patterns supported at design time, see https://go.microsoft.com/fwlink/?linkid=851728

Não foi possível criar um objeto do tipo 'FilmeContext'. Para os diferentes padrões com suporte em tempo de design, consulte https://go.microsoft.com/fwlink/?linkid=851728


CONTROLLERS

Está em: ...\FilmesAPI2022\FilmesAPI2022\Data\FilmeContext.cs

using FilmesAPI2022.Models;
using Microsoft.EntityFrameworkCore;

namespace FilmesAPI2022.Data;

public class FilmeContext : DbContext
{
    public FilmeContext(DbContextOptions<FilmeContext> opts) 
        : base(opts)
    {

    }

    // DbSet -> Conjunto de dados do BD.
    public DbSet<Filme> Filmes { get; set; }
}

Meu ConfigureServices:

public void ConfigureServices(IServiceCollection services)
{
    WebApplicationBuilder builder = WebApplication.CreateBuilder();
    string? connectionString = builder.Configuration.GetConnectionString("FilmeConnectionMySQL");

    //Serviço de Banco de Dados
    builder.Services.AddDbContext<FilmeContext>(opts =>
        opts.UseMySql(connectionString,
        ServerVersion.AutoDetect(connectionString)));

    // Add services to the container.
    services.AddControllers();
    services.AddEndpointsApiExplorer();
    services.AddSwaggerGen();
}

Ele indica esse "link", mas NÃO consegui sacar o problema. Alguém pode me mostrar uma luz que não seja dentro do túnel um farol de trem vindo na minha direção?

Agradecido,

[]'s,

Fabio I.

P.S.: Se me ajudar eu fecho o tópico e pontuo com 1K pontos o felizardo!

1 resposta
solução!

Tinha um erro no meu "Program.cs"... o correto é isso:

using FilmesAPI2022.Data;
using Microsoft.EntityFrameworkCore;

var builder = WebApplication.CreateBuilder(args);

var connectionString = builder.Configuration.GetConnectionString("FilmeConnectionMySQL");

builder.Services.AddDbContext<FilmeContext>(opts =>
    opts.UseMySql(connectionString, ServerVersion.AutoDetect(connectionString)));

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

// Add services to the container.

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();

Comparei com a versão final e encontrei a diferença.