#asp.net #asp.net-web-api
#asp.net #asp.net-веб-api
Вопрос:
Я создал две таблицы со следующими столбцами Имя таблицы: Столбцы TBL_Question:
QuestionId
QuestionTitle
QuestionBody
Имя таблицы: TBL_Response
Столбцы:
ResponseId
QuestionId (FK)
ResponseBody
После этого я использовал Entity Framework для создания слоя данных, который создает два класса:
- TBL_Question
- 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, иначе он должен быть пустым.