Простой способ вернуть идентификатор только дочерних объектовC#

Место общения программистов C#
Ответить
Гость
 Простой способ вернуть идентификатор только дочерних объектов

Сообщение Гость »


У меня есть проект webapi в ядре ASP.net. Я включил контроллер и объект, который хотел бы вернуть. Проблема в том, что у этого объекта может быть много дочерних элементов, которые, в свою очередь, могут иметь много дочерних элементов. Чтобы все было управляемо, я хотел бы возвращать только идентификаторы детей.

Единственное решение, которое я могу придумать, — это создать «промежуточный» объект. Этот объект может заполняться/заполняться из объекта базы данных и обратно. Но я могу себе представить, что это становится довольно громоздким, когда API растет. Кроме того, весьма подвержены ошибкам, когда поля добавляются, но их забывают заполнить.

Можно ли создать что-то вроде атрибута, который гарантирует возврат только идентификатора дочернего элемента?
[Апиконтроллер] [Маршрут("[контроллер]")] общедоступный класс ProjectItemsController: ControllerBase { [HttpGet] [Маршрут("GetById")] общедоступная асинхронная задача GetById (int id) { МойЭлемент? элемент = ждут _context.FindAsync(id); если (пункт == ноль) вернуть NotFound(); вернуть ОК (пункт); } }
публичный класс ProjectItem { [Ключ] общественный ИНТ Id {получить; набор; } общедоступная строка Title {get; набор; "=" общественный DateTime Created {get; набор; } общедоступный виртуальный пользователь? CreatedByUser {получить; набор; } общественный виртуальный ICollection Children {get; } = новый список(); публичный виртуальный ProjectItem? Родитель {получить; набор; } } РЕДАКТИРОВАТЬ: чтобы избежать путаницы, я хотел бы получить ответ

GetById/1
{ "идентификатор": 1, "title": "строка", "создано": "2023-09-20T19:51:04.524Z", "createdByUser": { «идентификатор»: 0, "keycloakId": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "имя_пользователя": "строка", "электронная почта": "строка" }, "дети": [ { "идентификатор": 2}, { "идентификатор": 3} ], "родитель": { "id": 4} }
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»