Простой способ вернуть идентификатор только дочерних объектов ⇐ 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} }
У меня есть проект 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} }
Мобильная версия