实体框架扩展抛出DynamicProxy异常

时间:2013-11-28 02:23:20

标签: entity-framework entity-framework-extended

尝试使用EntityFramework.Extended进行批量更新时,我得到两个例外之一。

看着我试过的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.UpdateAndExecute1(System.Runtime.CompilerServices.CallSite site,object arg0)+ 0x153 bytes

     

EntityFramework.Extended.dll!EntityFramework.Extensions.ObjectQueryExtensions.ToObjectQuery(System.Linq.IQueryable query)+ 0x2db bytes

     

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

     

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

基于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 bytes

     

EntityFramework.Extended.dll!EntityFramework.Mapping.ReflectionMappingProvider.CreateEntityMap(System.Data.Entity.Core.Objects.ObjectQuery query)+ 0x401 bytes

     

EntityFramework.Extended.dll!EntityFramework.Mapping.ReflectionMappingProvider.GetEntityMap(System.Data.Entity.Core.Objects.ObjectQuery query)+ 0x58 bytes

     

EntityFramework.Extended.dll!EntityFramework.Mapping.MappingResolver.GetEntityMap(System.Data.Entity.Core.Objects.ObjectQuery query)+ 0x9f bytes

     

EntityFramework.Extended.dll!EntityFramework.Extensions.BatchExtensions.Update(System.Linq.IQueryable source,System.Linq.Expressions.Expression&gt; updateExpression)+ 0x1c8 bytes

我尝试了EF5的最新版本,我升级到EF6以查看最新版本是否有效,但我遇到了同样的问题。我们使用Code First。

我不知道如何继续,我已经开始尝试了解EntityFramework.Extensions代码的工作原理。但我想知道是否必须回退使用存储过程或SQL,这对我们的设置来说都不是理想的。

有谁知道这些问题是什么,或者对如何解决发生的事情有任何想法?

1 个答案:

答案 0 :(得分:3)

事实证明你可以忽略这个错误。我打开了CLR运行时异常调试选项。我按照源代码进行了操作,然后下载并开始调试。

似乎最初抛出的异常是预期的,并且它会重试其他一些选项。不幸的是,我没有时间研究确切的问题,因为我遇到了另一个问题 - 但这是另一个问题的主题。