这是因为问题有答案,而答案有对问题的引用吗?
是。无法序列化。
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.Re??ferenceLoopHandling = ReferenceLoopHandling.Ignore;
将EF对象Question
投影到您自己的中间对象或DataTransferObject。然后可以成功序列化此Dto。
public class QuestionDto
{
public QuestionDto()
{
this.Answers = new List<Answer>();
}
public int QuestionId { get; set; }
...
...
public string Title { get; set; }
public List<Answer> Answers { get; set; }
}
就像是:
public IList<QuestionDto> GetQuestions(int subTopicId, int questionStatusId)
{
var questions = _questionsRepository.GetAll()
.Where(a => a.SubTopicId == subTopicId &&
(questionStatusId == 99 ||
a.QuestionStatusId == questionStatusId))
.Include(a => a.Answers)
.ToList();
var dto = questions.Select(x => new QuestionDto { Title = x.Title ... } );
return dto;
}