Я вставляю сущность с этим запросом, и он успешно выполняется.
Запрос
{
"Title": "Book 1"
}
Ответ
{
"id": 1,
"title": "Book 1",
"serialId": "00000000-0000-0000-0000-000000000000",
"borrows": null,
"votes": null
}
Я проверил базу данных и есть строка Book с id = 1. Но теперь, когда я пытаюсь получить список, он возвращает ошибку, потому что DbSet пуст после вставки.
var books = db.Books; // count = 0
Ответ для /books
является исключением:
"exceptionMessage": "The 'ObjectContent`1' type failed to serialize the response body for content type 'application/json; charset=utf-8'.",
И внутреннее исключение включает Error getting value from 'Borrows'
, поэтому я подумал, что это может быть связано скак определяется отношение, также в базе данных пока нет сущностей Borrow.
"exceptionMessage": "Error getting value from 'Borrows' on 'System.Data.Entity.DynamicProxies.Book_6E27A1F717202EA02AE923CCC6405EF9A501FE9A54A71841CEB43E942224D88A'.",
"exceptionType": "Newtonsoft.Json.JsonSerializationException",
Сущность Book
имеет свойство навигации List с определенной взаимосвязью:
modelBuilder.Entity<Book>().HasMany<Borrow>(b => b.Borrows);
Объект Book, определенный со списком объектов Borrow:
public virtual List<Borrow> Borrows { get; set; }
Миграция Book имеет только Id для первичного ключа:
CreateTable(
"dbo.Books",
c => new
{
Id = c.Int(nullable: false, identity: true),
Title = c.String(),
SerialId = c.Guid(nullable: false),
})
.PrimaryKey(t => t.Id);
Вопрос : Что вызывает это исключение, это связано с тем, как я определил отношения между Book
и Borrow
?Я видел примеры отношений, которые должны быть определены в обоих направлениях. Нужно ли мне определять отношения, чтобы как-то не требовать заимствования?Я заметил, что DbSet Count = 0 возникало в прошлом, когда были результаты, поэтому я думаю, что это также может быть проблемой с NewtonSoft.Я не уверен, что здесь происходит.
Полное исключение: https://pastebin.com/raw/BvUfBnKU