Код: Выделить всё
public class Session : Table
{
public IList? SessionExplanations { get; set; }
}
public class Explanation : Table
{
public IList? SessionExplanations { get; set; }
}
[PrimaryKey(nameof(SessionId), nameof(ExplanationId))]
public class SessionExplanations
{
public long SessionId { get; set; }
[ForeignKey("SessionId")]
public Session? Session { get; set; }
public long ExplanationId { get; set; }
[ForeignKey("ExplanationId")]
public Explanation? Explanation { get; set; }
}
Если запись новая, у меня нет идентификатора. Итак, я не знаю, как сформировать JSON в качестве полезной нагрузки, чтобы сохранить сеанс и все детали в объединяющей таблице.
В API мне нужно разделить сохранение в двух частях: сначала сохраните сеанс, а когда у меня будет идентификатор, сохраните данные в объединяющей таблице?
ОбновитьКроме того, когда я прочитал Запись Сеанс, я предпочитаю включать Пояснение, а затем возвращать из API полный json. Если я напишу этот минимальный API
Код: Выделить всё
group.MapGet("/{id}", async Task (
long id, DbContext db) =>
{
return await db.Sessions
.ThenInclude(d => d.SessionBrainExplanations)
.Where(s => s.ID == id)
.FirstOrDefaultAsync(model => model.ID == id)
is Session model
? TypedResults.Ok(model)
: TypedResults.NotFound();
})
.WithName("GetSessionById")
.WithOpenApi();
System.Text.Json.JsonException: обнаружен возможный цикл объекта. Это может быть связано либо с циклом, либо с тем, что глубина объекта превышает максимально допустимую глубину 64. Рассмотрите возможность использования ReferenceHandler.Preserve в JsonSerializerOptions для поддержки циклов.
Есть ли способ избежать этого?
Подробнее здесь: https://stackoverflow.com/questions/792 ... ve-via-api
Мобильная версия