У меня возникли проблемы с одним из моих запросов из-за функций отслеживания изменений и отложенной загрузки 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();
}
Примечание. Если вам нужно изучить мою модель домена, участвующую в этой операции, вы можете обратиться к этот вопрос.