首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET Framework >

EntityFramework中查询结果的返回,该怎么处理

2012-05-07 
EntityFramework中查询结果的返回public IQueryableCustomers Cust5(){using (var edm new NorthwindE

EntityFramework中查询结果的返回
public IQueryable<Customers> Cust5()
  {

  using (var edm = new NorthwindEntities())
  {

  var cust= edm.Customers.OrderBy(c => c.CustomerID.Skip(0).Take(5));
  return cust;
  }
  }
这个方法在一个程序集中,在另一个程序集中使用这个方法,但是返回的是接口(也就是指针),在调用程序集中:
 var cust=dal.Cust5();
  foreach(var c in cust)

  Console.WriteLine("CustomerID={0}", c.CustomerID);
执行提示:
此 ObjectContext 实例已释放,不可再用于需要连接的操作。用什么办法返回这个查询结果数据呢?

[解决办法]
linq有个延迟加载的概念
就是当要用的时候才去搜索
但你用了using 执行查询后 就没了 没有到要用时就释放了

public List<Customers> Cust5()
{

using (var edm = new NorthwindEntities())
{

var cust= edm.Customers.OrderBy(c => c.CustomerID.Skip(0).Take(5)).ToList();
return cust;
}
}
第二个问题 应该是没有加载程序集把
另外貌似skip和take是要先用orderby的

热点排行