Improve get Team by Id and include Coach and League.

Also add IgnoreCycles to options to prevent recursive problem.
This commit is contained in:
Kevin Matsubara 2025-04-14 13:15:53 +02:00
parent 30c3621deb
commit cbcfb5536d
2 changed files with 16 additions and 2 deletions

View File

@ -45,7 +45,16 @@ namespace EntityFrameworkCore.API.Controllers
[HttpGet("{id}")] [HttpGet("{id}")]
public async Task<ActionResult<Team>> GetTeam(int id) public async Task<ActionResult<Team>> GetTeam(int id)
{ {
var team = await _context.Teams.FindAsync(id); if (_context.Teams == null)
{
return NotFound();
}
// using λ for fun here.
var team = await _context.Teams
.Include(λ => λ.Coach)
.Include(λ => λ.League)
.FirstOrDefaultAsync(λ => λ.Id == id);
if (team == null) if (team == null)
{ {

View File

@ -1,11 +1,16 @@
using EntityFrameworkCore.Data; using EntityFrameworkCore.Data;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using System.Text.Json.Serialization;
using EntityFrameworkCore.API.Controllers; using EntityFrameworkCore.API.Controllers;
var builder = WebApplication.CreateBuilder(args); var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers(); builder.Services.AddControllers().AddJsonOptions(options =>
{
// IgnoreCycles prevents "System.Text.Json.JsonException: A possible object cycle was detected".
options.JsonSerializerOptions.ReferenceHandler = ReferenceHandler.IgnoreCycles;
});
// Add services to the container. // Add services to the container.
// Learn more about configuring OpenAPI at https://aka.ms/aspnet/openapi // Learn more about configuring OpenAPI at https://aka.ms/aspnet/openapi