Параметр условного расширения в ASP.WebAPI

#asp.net #asp.net-web-api

#asp.net #asp.net-веб-api

Вопрос:

Я создал две таблицы со следующими столбцами Имя таблицы: Столбцы TBL_Question:

 QuestionId
QuestionTitle
QuestionBody
  

Имя таблицы: TBL_Response
Столбцы:

 ResponseId 
QuestionId (FK)
ResponseBody 
  

После этого я использовал Entity Framework для создания слоя данных, который создает два класса:

  1. TBL_Question
  2. TB_Response

Для возврата данных из ASP.Net WebAPI, я хочу возвращать классы DTO, а не классы, которые генерируются генератором сущностей. Для этого созданы два класса DTO:

 public class Question
{
    public int QuestionId { get; set; }
    public string QuestionTitle { get; set; }
    public string QuestionBody { get; set; }
    public List<Response> Responses { get; set; } 
}

public class Response
{
    public string ResponseId { get; set; }
    public int QuestionId { get; set; } 
    public string ResponseBody { get; set; }
}
  

Я создал метод в WebAPI, который возвращает вопросы следующим образом:

 public IQueryable<DataList> GetDataLists()
    {
        var query = from a in siteDataRepository.DbContext.Tbl_Question
                    select new Question
                    {
                        QuestionId = a.QuestionId,
                QuestionTitle = a.QuestionTitle,
                QuestionBody=a.QuestionBody,
                Responses = a.Tbl_Response.Select(c1 => new Response
                            {
                                ResponseId=c1.ResponseId,
                                QuestionId=c1.QuestionId,
                ResponseBody=c1.ResponseBody
                            }).ToList(),
                    };

        return siteDataRepository.Search(query);
    }
  

Этот метод работает нормально. Запрос является:
Как я могу контролировать это, если опция $ expand предоставляется только тогда, когда она заполняет список ответов. Есть идеи?

Комментарии:

1. ...$expand option is provided.. Не могли бы вы уточнить?

2. Да, опция $ expand предусмотрена. Проблема в том, что даже если я не использую опцию $expand, ответы (дочерний список) заполняются. Я хочу, чтобы дочерний список заполнялся ТОЛЬКО тогда, когда службе передается $expand=Responsies, иначе он должен быть пустым.