我正在開發WCF數據服務。當我嘗試從客戶端訪問它,我得到這個異常:ObjectContext實例已被處置,並且不能再用於需要連接的操作
的ObjectContext的實例已經設置,不能再用於需要連接的操作。
代碼:
[WebGet]
public IQueryable<Student> GetUsersByClassId(string classId)
{
Check.Argument.IsNotEmptyOrNull(classId, "classId");
using (var db = new schoolContext(connectionString))
{
((IObjectContextAdapter)db).ObjectContext.ContextOptions.ProxyCreationEnabled = false;
((IObjectContextAdapter)db).ObjectContext.ContextOptions.LazyLoadingEnabled = false;
var studentQry = from s in db.Student.Include("Class")
where s.Class.Id == classId
select s;
if(studentQry == null)
return new List<Student>().AsQueryable();
else
return studentQry;
}
您必須在返回它之前評估IQueryable,將它變成IEnumerable或類似的,基本上返回一個懶集合,然後在任何人有機會通過它獲取數據之前,先取出數據庫連接。 – 2011-03-29 18:11:02