2013-11-28 31 views
2

當試圖使用EntityFramework.Extended執行批量更新時,我得到兩個例外之一。實體框架擴展拋出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。 DLL!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 query)+ 0x9f bytes

EntityFramework.Extended.dll!EntityFramework.Extensions.BatchExtensions.Update(System.Linq.IQueryable source,System.Linq.Expressions.Expression> updateExpression )+ 0x1c8字節

我試過的最新版本爲EF5,並且我升級到EF6,看看最新版本的作品,但我得到了同樣的問題。我們使用Code First。

我不知道如何繼續,我已經開始嘗試瞭解EntityFramework.Extensions代碼如何工作。但我想知道我是否必須退回到使用存儲過程或SQL,這對我們的設置來說都不是理想的。

有沒有人知道這些問題是什麼,或者對如何解決發生的事情有任何想法?

回答

3

事實證明,您可以忽略此錯誤。我打開了CLR運行時異常調試選項。我跟蹤了源代碼,然後下載它並開始調試。

看來最初拋出的異常是預期的,它會重試其他一些選項。不幸的是,我沒有時間研究確切的問題,因爲我遇到了另一個問題 - 但這是另一個問題的主題。

相關問題