首页 文章

我正在处理ObjectContext实例,即使没有处理任何内容[重复]

提问于
浏览
0

这个问题在这里已有答案:

我收到以下错误

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 回答

  • 1

    你正在将一个延迟加载的EntityFramework ICollection 传递给 Json(..) 方法 . 在序列化响应时,EntityFramework上下文将被释放 .

    在传递之前,将 .ToList() 添加到 ICollection / IQueryable / IEnumerable 的末尾 .

    return Json(meta.ToList(), JsonRequestBehavior.AllowGet);
    

相关问题