使用WCF数据服务和EF返回IQueryable的正确方法

时间:2011-08-25 13:11:34

标签: entity-framework-4 wcf-data-services

所以我想返回一些数据,我正在使用WCF数据服务和实体框架,如下所示:

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声明?数据有时可能是100k行,因此转换为列表会占用大量内存。真正利用延迟执行并返回真正的IQueryable也是很好的。

1 个答案:

答案 0 :(得分:1)

你不需要使用,事实上最好不要使用它。 WCF数据服务将在请求结束时处理CurrentDataSource。所以只需使用它。