所以我想返回一些数据,我正在使用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也是很好的。
答案 0 :(得分:1)
你不需要使用,事实上最好不要使用它。 WCF数据服务将在请求结束时处理CurrentDataSource。所以只需使用它。