Ich verwende Entity Framework und habe ein Problem damit, übergeordnete und untergeordnete Daten in den Browser zu übertragen. Hier sind meine Klassen:
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; }
}
Ich verwende den folgenden Code, um die Frage- und Antwortdaten zurückzugeben:
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;
}
Auf der C # -Seite scheint dies zu funktionieren, aber ich stelle fest, dass die Antwortobjekte Verweise auf die Frage haben. Wenn ich die WebAPI verwende, um die Daten an den Browser zu senden, wird folgende Meldung angezeigt:
Der Typ 'ObjectContent`1' konnte den Antworttext für den Inhaltstyp 'application / json nicht serialisieren. Zeichensatz = utf-8 '.
Selbstreferenzierende Schleife für Eigenschaft 'Frage' mit Typ 'Models.Core.Question' erkannt.
Liegt das daran, dass die Frage Antworten enthält und die Antworten einen Verweis auf die Frage haben? Alle Orte, an denen ich gesucht habe, schlagen vor, einen Verweis auf die Eltern im Kind zu haben, sodass ich nicht sicher bin, was ich tun soll. Kann mir jemand einen Rat geben.