2013-11-28 2 views
2

При попытке делать массовые обновления с использованием EntityFramework.Extended я получаю одно из двух исключений.Сущность Framework расширенные броски Исключение DynamicProxy

Глядя на example я попробовал:

context.ProcessJobs.Where(job => true).Update(job => new ProcessJob 
{ 
    Status = ProcessJobStatus.Processing, 
    StatusTime = DateTime.Now, 
    LogString = "Processing" 
}); 

я получил следующее исключение:

'EntityFramework.Reflection.DynamicProxy' не содержит определение для 'InternalQuery'

...

System.Core.dll! System.Dynamic.UpdateDelegates.UpdateA ndExecute1 (System.Runtime.CompilerServices.CallSite сайт, объект arg0) + 0x153 байт

EntityFramework.Extended.dll! EntityFramework.Extensions.ObjectQueryExtensions.ToObjectQuery (System.Linq.IQueryable запрос) + 0x2db байт

EntityFramework .Extended.dll! EntityFramework.Extensions.BatchExtensions.Update (System.Linq.IQueryable источник, System.Linq.Expressions.Expression> updateExpression) + 0xe9 байт

EntityFramework.Extended.dll! EntityFramework.Extensions.BatchExtensions.Update (Источник System.Linq.IQueryable, System.Linq.Expressions.Expression> updateExpression) + 0xe9 байтов

Основываясь на github issue, я попробовал:

var c = ((IObjectContextAdapter) context).ObjectContext.CreateObjectSet<ProcessJob>(); 
c.Update(job => new ProcessJob 
{ 
    Status = ProcessJobStatus.Processing, 
    StatusTime = DateTime.Now, 
    LogString = "Processing" 
}); 

Какие результаты в исключения (возможно такой же ошибкой, как сообщалось here)

'EntityFramework.Reflection.DynamicProxy' не содержит определение для 'EnsureMetadata'

...

EntityFramework.Extended.dll! EntityFramework.Mapping.ReflectionMappingProvider.FindMappingFragment (System.Collections.Generic.IEnumerable ItemCollection, System.Data.Entity.Core.Metadata.Edm.EntitySet EntitySet) + 0xc1e байт

EntityFramework.Extended. длл! EntityFramework.Mapping.ReflectionMappingProvider.CreateEntityMap (System.Data.Entity.Core.Objects.ObjectQuery запрос) + 0x401 байт

EntityFramework.Extended.dll! EntityFramework.Mapping.ReflectionMappingProvider.GetEntityMap (System.Data.Entity. Запрос Core.Objects.ObjectQuery) + 0x58 байтов

EntityFramework.Extended.dll! EntityFramework.Mapping.MappingResolver.GetEntityMap (Sy stem.Data.Entity.Core.Objects.ObjectQuery запрос) + 0x9F байт

EntityFramework.Extended.dll! EntityFramework.Extensions.BatchExtensions.Update (System.Linq.IQueryable источник, System.Linq.Expressions.Expression> updateExpression) + 0x1c8 bytes

Я пробовал последнюю версию для EF5, и я обновился до EF6, чтобы увидеть, работает ли последняя версия, но у меня такая же проблема. Мы используем Code First.

Я не уверен, как это сделать, я начал пытаться понять, как работает код EntityFramework.Extensions. Но мне интересно, придется ли мне вернуться к использованию хранимой процедуры или SQL, которые не идеальны для нашей установки.

Кто-нибудь знает, что это за проблемы, или есть идеи о том, как выработать то, что происходит?

ответ

3

Оказалось, что вы можете игнорировать эту ошибку. У меня включена опция отладки исключений CLR. Я последовал за исходным кодом, а затем загрузил его и начал отлаживать.

Похоже, что изначально выбрано исключение, и оно повторяет некоторые другие варианты. К сожалению, я не успел заглянуть в точную проблему, потому что столкнулся с другим, но это вопрос другого вопроса.

 Смежные вопросы

  • Нет связанных вопросов^_^