Я новичок в Entity Framework Core.
У меня такая структура данных:
Книги содержат много глав.
/>Главы содержат множество заметок на странице.
Мой запрос объекта в моем контроллере API выглядит следующим образом, и в ходе его отладки я вижу, что он находит правильные результаты.
ServiceResponse response = new ServiceResponse();
List Books = await _context.Books.Include(x => x.Chapters).ThenInclude(x => x.PageNotes).ToListAsync();
response.Data = Books;
response.Success = true;
response.Message = "List of All Books Provided";
return Ok(response);
Проблема в том, что я получаю следующее исключение в своем контроллере, когда он пытается вернуть данные.
System.InvalidOperationException: The exception handler configured on ExceptionHandlerOptions produced a 404 status response. This InvalidOperationException containing the original exception was thrown since this is often due to a misconfigured ExceptionHandlingPath. If the exception handler is expected to return 404 status responses then set AllowStatusCode404Response to true.
---> System.Text.Json.JsonException: A possible object cycle was detected. This can either be due to a cycle or if the object depth is larger than the maximum allowed depth of 32. Consider using ReferenceHandler.Preserve on JsonSerializerOptions to support cycles. Path: $.Data.Chapters.Book.Chapters.Book.Chapters.Book.Chapters.Book.Chapters.Book.Chapters.Book.Chapters.Book.Chapters.Book.Chapters.Book.Chapters.Id.
Любые советы приветствуются!
Если это актуально, вот мои классы базы данных. Я впервые создаю такую сложную структуру, так что проблема может быть именно в этом?
public class MyBooksTable
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public string Id { get; set; }
public ICollection UserBooks { get; set; }
[ForeignKey("UserId")]
public string UserId { get; set; }
public AppUser User { get; set; }
}
public class UserBook
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public string Id { get; set; }
[ForeignKey("MyBooksTableId")]
public string MyBooksTableId { get; set; }
public MyBooksTable MyBooksTable { get; set; }
[ForeignKey("BooksId")]
public string BooksId { get; set; }
public Book Book { get; set; }
public DateTime BookDateOfPurchase { get; set; } = DateTime.MinValue;
}
public class Book
{
[Key]
public string Id { get; set; } = Guid.NewGuid().ToString();
[Required]
public string Name { get; set; } = string.Empty;
public string Description { get; set; } = string.Empty;
public decimal Price { get; set; } = decimal.Zero;
public ICollection Chapters { get; set; } = new List();
public ICollection? UserBooks { get; set; }
}
public class Chapter
{
[Key]
public string Id { get; set; } = Guid.NewGuid().ToString();
[Required]
public string Title { get; set; } = string.Empty;
public string Description { get; set; } = string.Empty;
public ICollection? PageNotes { get; set; } = new List();
[ForeignKey("BookId")]
public string BookId { get; set; }
public Book Book { get; set; }
}
public class PageNote
{
[Key]
public string Id { get; set; } = Guid.NewGuid().ToString();
public string Title { get; set; } = string.Empty;
public string Description { get; set; } = string.Empty;
[ForeignKey("ChapterId")]
public string ChapterId { get; set; }
public Chapter Chapter { get; set; }
}
Подробнее здесь: https://stackoverflow.com/questions/782 ... om-web-api
Возврат результатов сущности с включениями из Web Api ⇐ C#
Место общения программистов C#
-
Anonymous
1711980645
Anonymous
Я новичок в Entity Framework Core.
У меня такая структура данных:
Книги содержат много глав.
/>Главы содержат множество заметок на странице.
Мой запрос объекта в моем контроллере API выглядит следующим образом, и в ходе его отладки я вижу, что он находит правильные результаты.
ServiceResponse response = new ServiceResponse();
List Books = await _context.Books.Include(x => x.Chapters).ThenInclude(x => x.PageNotes).ToListAsync();
response.Data = Books;
response.Success = true;
response.Message = "List of All Books Provided";
return Ok(response);
Проблема в том, что я получаю следующее исключение в своем контроллере, когда он пытается вернуть данные.
System.InvalidOperationException: The exception handler configured on ExceptionHandlerOptions produced a 404 status response. This InvalidOperationException containing the original exception was thrown since this is often due to a misconfigured ExceptionHandlingPath. If the exception handler is expected to return 404 status responses then set AllowStatusCode404Response to true.
---> System.Text.Json.JsonException: A possible object cycle was detected. This can either be due to a cycle or if the object depth is larger than the maximum allowed depth of 32. Consider using ReferenceHandler.Preserve on JsonSerializerOptions to support cycles. Path: $.Data.Chapters.Book.Chapters.Book.Chapters.Book.Chapters.Book.Chapters.Book.Chapters.Book.Chapters.Book.Chapters.Book.Chapters.Book.Chapters.Id.
Любые советы приветствуются!
Если это актуально, вот мои классы базы данных. Я впервые создаю такую сложную структуру, так что проблема может быть именно в этом?
public class MyBooksTable
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public string Id { get; set; }
public ICollection UserBooks { get; set; }
[ForeignKey("UserId")]
public string UserId { get; set; }
public AppUser User { get; set; }
}
public class UserBook
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public string Id { get; set; }
[ForeignKey("MyBooksTableId")]
public string MyBooksTableId { get; set; }
public MyBooksTable MyBooksTable { get; set; }
[ForeignKey("BooksId")]
public string BooksId { get; set; }
public Book Book { get; set; }
public DateTime BookDateOfPurchase { get; set; } = DateTime.MinValue;
}
public class Book
{
[Key]
public string Id { get; set; } = Guid.NewGuid().ToString();
[Required]
public string Name { get; set; } = string.Empty;
public string Description { get; set; } = string.Empty;
public decimal Price { get; set; } = decimal.Zero;
public ICollection Chapters { get; set; } = new List();
public ICollection? UserBooks { get; set; }
}
public class Chapter
{
[Key]
public string Id { get; set; } = Guid.NewGuid().ToString();
[Required]
public string Title { get; set; } = string.Empty;
public string Description { get; set; } = string.Empty;
public ICollection? PageNotes { get; set; } = new List();
[ForeignKey("BookId")]
public string BookId { get; set; }
public Book Book { get; set; }
}
public class PageNote
{
[Key]
public string Id { get; set; } = Guid.NewGuid().ToString();
public string Title { get; set; } = string.Empty;
public string Description { get; set; } = string.Empty;
[ForeignKey("ChapterId")]
public string ChapterId { get; set; }
public Chapter Chapter { get; set; }
}
Подробнее здесь: [url]https://stackoverflow.com/questions/78255664/returning-entity-results-with-includes-from-web-api[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия