由于 EF 的更改跟踪和延迟加载功能,我的一个查询遇到了问题。问题是,在获得查询结果后,我使用 AutoMapper 将域对象映射到我的业务模型中,但由于上下文已被处理,它不断抛出异常。
ObjectContext 实例已被释放,不能再用于需要连接的操作。
当我在调试器中查看生成的集合时,我发现它是一个列表,DynamicProxy而不是实际实体。我试图停止更改跟踪,但这没有帮助。这是我的代码:
    public List<ContentTypeColumn> GetContentTypeColumns(Int64 contentTypeId)
    {
        List<ContentTypeColumn> result = new List<ContentTypeColumn>();
        using (SCGREDbContext context = new SCGREDbContext())
        {                
            ContentType contentType = context.ContentTypes.Include("Parent").AsNoTracking().FirstOrDefault(x => x.Id.Equals(contentTypeId));
            result.AddRange(contentType.ContentTypeColumns.ToList());
            while (contentType.Parent != null)
            {
                result.AddRange(contentType.Parent.ContentTypeColumns.ToList());
                contentType = contentType.Parent;
            }    
        }
        return result.ToList();
    }
注意:如果您需要查看我在此操作中涉及的域模型,您可以参考这个问题。