这个问题在这里已有答案:
我收到以下错误
ObjectContext实例已被释放,不能再用于需要连接的操作 .
但我不明白为什么框架会抛出这个错误 . 这是代码 .
var bookmark = type.ToLower() == "bookmark"
? db.Bookmarks.First(u => u.BookmarkID == id)
: db.Users.First(u => u.UserID == id).Videos.FirstOrDefault(a => a.Recording)?.Bookmarks.OrderBy(b => b.Timestamp).FirstOrDefault();
if (bookmark != null)
{
var meta = bookmark.relBookmarkMetadatas.Select(a => new
{
Value =
FormatValue(a.Value, a.MetadataDefinition.MetadataType.ObjectType, a.MetadataDefinition.MetadataType.FormatString),
a.MetadataDefinition.MetadataClass.Class,
a.MetadataDefinition.Name,
a.MetadataDefinition.MetadataType.ObjectType,
a.MetadataDefinition.MetadataType.FormatString
});
return Json(meta, JsonRequestBehavior.AllowGet);
}
为什么我收到此错误?
错误发生在
var meta = bookmark.relBookmarkMetadatas.Select(a => new
1 回答
你正在将一个延迟加载的EntityFramework
ICollection
传递给Json(..)
方法 . 在序列化响应时,EntityFramework上下文将被释放 .在传递之前,将
.ToList()
添加到ICollection
/IQueryable
/IEnumerable
的末尾 .