Tmj Josiel. Eu estou de olho nas promos de Black Friday pra renovar.

Se me permite, deixo mais uma dica pra melhorar/destravar alguns códigos.

Use o phind.com, só pedir um exemplo de codigo com a versão mais recente.

Ex: Um Crud Csharp de lista de tarefas usando Minimal APIs com .NET8

// TODO 2023
// Organização do projeto
- Models
  - Todo.cs
- Data
  - TodoDbContext.cs
- Routes
  - TodoRoutes.cs
- wwwroot
- appsettings.json
- Program.cs

// Trecho de código para criar as rotas
public static class TodoRoutes
{
   public static void MapTodoRoutes(this WebApplication app, TodoDb db)
   {
       // Listar todas as tarefas
       var todoItems = app.MapGroup("/todoitems");
       todoItems.MapGet("/", async () => await db.Todos.ToListAsync());
       
       // Listar todas as tarefas que foram completadas
       todoItems.MapGet("/complete", async () =>
       await db.Todos.Where(t => t.IsComplete).ToListAsync());
       
       // Listar a tarefa por ID    
       todoItems.MapGet("/{id}", async (int id) =>
           await db.Todos.FindAsync(id)
               is Todo todo
                  ? Results.Ok(todo)
                  : Results.NotFound());
       
       // Criar uma nova tarefa
       todoItems.MapPost("/", async (Todo todo) =>
       {
           db.Todos.Add(todo);
           await db.SaveChangesAsync();
           return Results.Created($"/todoitems/{todo.Id}", todo);
       });
       
       // Atualizar uma tarefa informando o ID
       todoItems.MapPut("/{id}", async (int id, Todo inputTodo) =>
       {
           var todo = await db.Todos.FindAsync(id);
           if (todo is null) return Results.NotFound();
           todo.Name = inputTodo.Name;
           todo.IsComplete = inputTodo.IsComplete;
           await db.SaveChangesAsync();
           return Results.NoContent();
       });
       
       // Apagar uma tarefa informando o ID
       todoItems.MapDelete("/{id}", async (int id) =>
       {
           if (await db.Todos.FindAsync(id) is Todo todo)
           {
               db.Todos.Remove(todo);
               await db.SaveChangesAsync();
               return Results.NoContent();
           }
           return Results.NotFound();
       });
   }
}

// Program.cs - Iniciando a aplicação
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

app.MapTodoRoutes(new TodoDb(builder.Configuration.GetConnectionString("TodoDb")));

app.Run();

Bons estudos e bons códigos! :)