entity-framework - Entity Framework 扩展抛出 DynamicProxy 异常

标签 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' does not contain a definition for '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' does not contain a definition for '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> updateExpression) + 0x1c8 bytes

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

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

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

最佳答案

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

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

关于entity-framework - Entity Framework 扩展抛出 DynamicProxy 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20256622/

相关文章:

c# - 无法使用 mySql 在 Entity Frameworking 中使用 Decimal DataType 更新行

sql-server - 使用 Entity Framework 作为数据库设计工具?

c# - DBSet.Where(...).Delete() -> "no matching element"这不是真的

vb.net - 无法加载类型 'System.Data.Entity.Core.Mapping.EntityContainerMapping'

image - 在 ASP.Net MVC3 Razor 中将 Viewbag 数据从 View 传递到 Controller

c# - Web API 异步,我做对了吗?

c# - EntityFramework.Extended 更新不起作用 - 无法转换 DynamicProxy

c# - 我如何传递 MemberInitExpression 对象

c# - EntityFramework.Extended Future 错误(JIT 编译器内部限制)

c# - 如何在 ASP.NET Core 1.0 中配置身份验证