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

Entity framework 4 使用WCF数据服务和EF返回IQueryable的正确方法,entity-framework-4,wcf-data-services,Entity Framework 4,Wcf Data Services,所以我想返回一些数据,我使用的是WCF数据服务和实体框架,看起来像: public class MyWcfDataService : DataService<MyEFModel> { [WebGet(ResponseFormat = WebMessageFormat.Json)] public IQueryable<GetMyListEF> GetMyList() { using (MyEfModel context = this.Curr

所以我想返回一些数据,我使用的是WCF数据服务和实体框架,看起来像:

public class MyWcfDataService : DataService<MyEFModel>
{
   [WebGet(ResponseFormat = WebMessageFormat.Json)]
   public IQueryable<GetMyListEF> GetMyList()
   {
       using (MyEfModel context = this.CurrentDataSource)
       {
           return context.GetMyListEF().ToList().AsQueryable();
       }
   }
}
公共类MyWcfDataService:DataService
{
[WebGet(ResponseFormat=WebMessageFormat.Json)]
公共IQueryable GetMyList()
{
使用(MyEfModel context=this.CurrentDataSource)
{
返回context.GetMyListEF().ToList().AsQueryable();
}
}
}
正如你所看到的,我正在向一个列表施压,然后向queryable施压。如果我只强制转换AsQueryable(),我将无法读取数据,因为连接已关闭(由于AsQueryable的延迟执行)


所以我的问题是,有没有更好的办法?
是否需要使用
语句?数据有时可能是10万行,因此转换到列表会占用相当多的内存。真正利用延迟执行并只返回一个真正的IQueryable也很好。

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

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

谢谢您的回复。我一直被告知,无论什么时候,只要有东西实现了IDisposable,它就应该被处理掉。您能否提供一个链接,指向DataService如何以您描述的方式工作的工作流文档?您需要在代码拥有的所有IDisposable实例上使用。数据源归数据服务对象所有。它在创建数据服务对象后不久创建,并在处理请求后释放。不幸的是,我现在找不到一个可以描述这一点的链接。谢谢你的回复。我一直被告知,无论什么时候,只要有东西实现了IDisposable,它就应该被处理掉。您能否提供一个链接,指向DataService如何以您描述的方式工作的工作流文档?您需要在代码拥有的所有IDisposable实例上使用。数据源归数据服务对象所有。它在创建数据服务对象后不久创建,并在处理请求后释放。不幸的是,我现在找不到一个可以描述这一点的链接。