J'utilise Entity Framework et j'ai un problème avec l'envoi des données parent et enfant au navigateur. Voici mes classes :
public class Question
{
public int QuestionId { get; set; }
public string Title { get; set; }
public virtual ICollection<Answer> Answers { get; set; }
}
public class Answer
{
public int AnswerId { get; set; }
public string Text { get; set; }
public int QuestionId { get; set; }
public virtual Question Question { get; set; }
}
J'utilise le code suivant pour renvoyer les données de la question et de la réponse :
public IList<Question> GetQuestions(int subTopicId, int questionStatusId)
{
var questions = _questionsRepository.GetAll()
.Where(a => a.SubTopicId == subTopicId &&
(questionStatusId == 99 ||
a.QuestionStatusId == questionStatusId))
.Include(a => a.Answers)
.ToList();
return questions;
}
Du côté C#, cela semble fonctionner, mais je remarque que les objets de réponse ont des références à la question. Lorsque j'utilise l'interface WebAPI pour obtenir les données dans le navigateur, j'obtiens le message suivant :
Le type 'ObjectContent`1' n'a pas réussi à sérialiser le corps de la réponse pour le type de contenu 'application/json ; charset=utf-8'.
Une boucle d'auto-référencement a été détectée pour la propriété 'question' de type 'Models.Core.Question'.
Est-ce parce que la question comporte des réponses et que les réponses renvoient à la question ? Tous les sites que j'ai consultés suggèrent d'avoir une référence au parent dans l'enfant, donc je ne sais pas trop quoi faire. Quelqu'un peut-il me donner des conseils à ce sujet ?