I'm trying to make a simple one-to-many relationship in C# using Entity Framework Core, the problem resembles a circular reference problem but no exception is being thrown.
My model classes are:
[Table("Restaurantes")]
public class Restaurante
{
public int Id { get; set; }
public string Descricao { get; set; }
public List<Prato> Pratos { get; set; }
}
[Table("Pratos")]
public class Prato
{
public int Id { get; set; }
public string Descricao { get; set; }
public decimal Preco { get; set; }
[ForeignKey("RestauranteForeignKey")]
public Restaurante Restaurante { get; set; }
}
// One Prato (Dish) belongs to One Restaurant and one Restaurant can have many Dishes (Pratos)
I'm returning the Pratos from DB and I want that it returns also with their respective Restaurant:
context.Pratos.Include(r => r.Restaurante).ToList();
The context definition:
public class Contexto : DbContext
{
public DbSet<Restaurante> Restaurantes { get; set; }
public DbSet<Prato> Pratos { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Prato>()
.HasOne(p => p.Restaurante)
.WithMany(r => r.Pratos)
.OnDelete(DeleteBehavior.Cascade);
}
}
But on the browser, the JSON returned is something like:
[ {"id":1,"descricao":"prato 1","preco":1.50,"restaurante":{"id":1,"descricao":"fulano","pratos":[
It returns no more than that. I also tried the documentation but didn't helped in terms of this problem. Thanks in advance.