Правильный способ вернуть IQueryable с использованием WCF Data Service и EF - PullRequest
1 голос
/ 25 августа 2011

Итак, я хочу вернуть некоторые данные, и я использую WCF Data Services и Entity Framework, которые выглядят следующим образом:

public class MyWcfDataService : DataService<MyEFModel>
{
   [WebGet(ResponseFormat = WebMessageFormat.Json)]
   public IQueryable<GetMyListEF> GetMyList()
   {
       using (MyEfModel context = this.CurrentDataSource)
       {
           return context.GetMyListEF().ToList().AsQueryable();
       }
   }
}

Как видите, я выполняю приведение к списку, а затемзапрашиваемый.Если я произнесу только AsQueryable(), я не смогу прочитать данные, потому что соединение закрылось (из-за отложенного выполнения AsQueryable).

Итак, мой вопрос, есть ли лучший способ?Нужно ли даже выражение using?Иногда данные могут содержать до 100 тыс. Строк, поэтому приведение к списку требует значительного объема памяти.Было бы также неплохо по-настоящему воспользоваться преимуществами отложенного выполнения и вернуть только истинный IQueryable.

1 Ответ

1 голос
/ 26 августа 2011

Вам не нужно использовать, на самом деле лучше не иметь его. Служба данных WCF будет располагать CurrentDataSource в конце запроса. Так что просто используйте его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...