У меня есть WebAPI, созданный на основе .NET Core.
API возвращает список городов с достопримечательностями.(отношение один ко многим)
Я использую Postman для проверки результатов, но точно так же происходит в браузере.
Что происходит (и это не связано с самим кодом), когдаЯ хочу получить города без достопримечательностей, возвращающийся JSON выглядит просто отлично и правильно отформатирован:
https://localhost:44316/api/cities?includeAttractions=false
Однако, когда я хочу получить города с достопримечательностями,возвращаемый JSON обрезается и не может быть отформатирован:
https://localhost:44316/api/cities?includeAttractions=true
Скажите, пожалуйста, почему он усекается?
WebAPI возвращает правильную действительную коллекцию
Модели:
public class City
{
public City()
{
Attractions = new HashSet<Attraction>();
}
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public int Population { get; set; }
public int NumberOfAttractions { get { return Attractions.Count(); } }
public virtual ICollection<Attraction> Attractions { get; set; }
}
public class Attraction
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public int CityId { get; set; }
public virtual City City { get; set; }
}
public class CityInfoContext : DbContext
{
public CityInfoContext(DbContextOptions options) : base(options)
{
}
public virtual DbSet<City> Cities { get; set; }
public virtual DbSet<Attraction> Attractions { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Attraction>(entity =>
{
entity.HasIndex(e => e.CityId);
entity.Property(e => e.Description).IsRequired().HasMaxLength(200);
entity.Property(e => e.Name).IsRequired().HasMaxLength(50);
entity.HasOne(d => d.City).WithMany(p => p.Attractions).HasForeignKey(d => d.CityId);
});
modelBuilder.Entity<City>(entity =>
{
entity.Property(e => e.Description).IsRequired().HasMaxLength(200);
entity.Property(e => e.Name).IsRequired().HasMaxLength(50);
});
}
}