Судя по вашему классу, свойства ICollection определяют отношения внешнего ключа? Если это так, вы не хотели бы публично выставлять коллекции.
Например: если вы следуете руководству по передовым методам разработки моделей Entity Framework, то у вас будет отдельный класс с именем «Вопрос», который соединит два ваших класса вместе, что может выглядеть следующим образом:
public class Question
{
[Key]
public int Id { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public virtual Survey Survey { get; set; }
}
Если бы это было так, вы вполне могли бы обойти круги, называя Вопрос -> Опрос -> ICollection -> Вопрос
У меня был похожий инцидент с использованием EF, MVC3 для реализации службы REST, и я не смог сериализовать объект ICollection <>, затем понял, что мне это не нужно, так как я все равно буду вызывать объект отдельно.
Обновленный класс для ваших целей будет выглядеть так:
public class Survey
{
public Survey()
{
SurveyResponses=new List<SurveyResponse>();
}
[Key]
public Guid SurveyId { get; set; }
public string SurveyName { get; set; }
public string SurveyDescription { get; set; }
[XmlIgnore]
[IgnoreDataMember]
public virtual ICollection<Question> Questions { get; set; }
[XmlIgnore]
[IgnoreDataMember]
public virtual ICollection<SurveyResponse> SurveyResponses { get; set; }
}
Надеюсь, это поможет вам.