Похоже, что сериализуются прокси-классы для ваших POCO, моя первая рекомендация будет использовать proxydatacontractresolver: http://msdn.microsoft.com/en-us/library/system.data.objects.proxydatacontractresolver.aspx.
Также я бы поработал над тем, чтобы все было явно прописано при загрузке данных для отправки черезвеб-служба ... т.е.
Изменить родительский класс на
public class ParentClass
{
public int ID { get; set; }
public string Name {get;set;}
public List<ChildrenClass> Children { get; set; }
}
Измените содержимое, чтобы отключить отложенную загрузку: Отключите отложенную загрузку по умолчанию в Entity Framework 4
И явно укажите, что вы хотите загрузить при возврате данных, передаваемых по сети.
[WebGet(UriTemplate = "")]
public List<ParentClass> GetParents()
{
var result = db.Parents.Include("Children").ToList();
return result;
}
Посмотрите на следующий ответ: Entity Framework Code First - Eager Загрузка неработать как положено? для более продвинутых Включите звонки.
Также совет из опыта, я бы не стал возвращать ваши классы данных по проводам, поскольку они формируют контракт для потребителя вашего веб-сервиса,Лучше всего иметь другой набор классов, в который сопоставляются значения данных.
Таким образом, если ваши классы данных изменяются, вам не нужно менять клиента веб-службы, если это явно не требуется.
А использование подкачки важно, если вы ожидаете 1000 строк в классах Parent или Child, в противном случае вы выбираете N + 1 select, см .: Что такое SELECT N + 1? .