Как лениво загруженные сущности POCO, структура сущностей и WCF работают вместе? - PullRequest
0 голосов
/ 22 сентября 2010

Если проект использовал POCO для сущностей, использует структуру сущностей и использует отложенную загрузку, то у вас есть «неполный» граф объектов, возвращающийся по проводам.Итак, когда клиент использует Entity, существует ли какой-нибудь прокси, который будет автоматически загружать оставшиеся значения?Нужно ли нам самим создавать этот прокси и оборачивать в него оригинальную сущность?Или есть принятый шаблон для идентификации ленивых загруженных типов, который затем будет сигнализировать клиенту сделать еще один вызов в WCF?

Ответы [ 2 ]

2 голосов
/ 22 сентября 2010

Ленивая загрузка с WCF обычно не работает, потому что ваш метод выглядит так:

public List<MyPoco> GetData()
{
  using (var context = new MyObjectContext())
  {
    return context.MyPocos.ToList();
  }
}

Как вы видите, контекст закрыт в методе (вы должны где-то закрыть контекст). Но когда список будет сериализован, он попытается выполнить отложенную загрузку зависимых объектов => исключение, поскольку контекст уже закрыт. В WCF вы должны использовать готовую загрузку.

1 голос
/ 22 сентября 2010

Используйте плоские DTO, вы, вероятно, не хотите раскрывать свой полный домен клиенту в любом случае.WCF основан на сообщениях, а не на домене.

...