Fala oJosiels, sou assinante do balta.io. Vale muito a pena seguir a carreira Csharp com ele.

O material é bem organizado e o conhecimento adquirido você leva para qualquer outra linguagem se quiser.

Além disso, acabou de ser lançado o .NET8, que traz recursos modernos para usar no Frontend (Blazor) e Backend (Minimal APIs).

Salve Thiago Valeu pela resposta maninho, então em breve vou assinar o balta.io também Muito obrigado pelo feedback, fico mais seguro no meu próximo investimento :)

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 ```csharp // 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! :)