日期:2014-05-20  浏览次数:20984 次

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的