实体框架急于在EF4和EF6中加载差异

g_b

EF6中的EntityCollection.Load()等价于什么?我目前正在阅读一本针对EF4的书,在其中一个示例中,它调用了Load()方法:

foreach (var contact in contacts)
{
    contact.Addresses.Load();
    Console.WriteLine(contact.Addresses.Count);
}

我正在使用EF6进行测试并查看互联网,这是我发现的有效方法:

foreach (var contact in contacts)
{
    context.Entry(contact).Collection(c => c.Addresses).Load();
    Console.WriteLine(contact.Addresses.Count());
}

但是,如果这是等效的,那么当我使用EF4运行代码时,为什么与第一个代码相比这么慢(非常非常慢)?这两个代码都禁用了LazyLoading。我知道可能有更好的编码方式可以使其加载更快,但是我很好奇为什么EF6的代码比EF4的代码要慢得多(对此)。还是这不是EF6中的等效代码?

贫民窟

更接近的等效项可能是:

context.Configuration.AutoDetectChangesEnabled = false;
foreach (var contact in contacts)
{
    context.Entry(contact).Collection(c => c.Addresses).Load();
    Console.WriteLine(contact.Addresses.Count());
}

.Entry方法在DetectChanges内部调用ifAutoDetectChangesEnabled设置为true(默认情况下)。取决于上下文中实体的数量和contacts自动更改检测的数量可能会非常耗时,尤其是在循环中多次调用时。在EF 4和ObjectContext没有AutoDetectChangesEnabled标志,并且因为它是在没有在如此多的EF的方法进行改变检测DbContext的API时AutoDetectChangesEnabledtrue

您能否尝试改善性能?我也会很感兴趣。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在 EF6 中加载相关实体

来自分类Dev

从EF4升级后,在EF6中查询数据的空引用异常

来自分类Dev

EF6更新附加需求已修改,否则静默失败与EF4

来自分类Dev

检查“延迟加载”属性是否已在EF6中加载

来自分类Dev

实体框架代码优先迁移在EF5中有效,但在EF6中无效

来自分类Dev

EF6渴望加载相关实体的单个属性

来自分类Dev

如何急于在EF Core中加载相关数据?

来自分类Dev

无法使用EF6和MYSQL生成实体

来自分类Dev

更新EF4中的记录?

来自分类Dev

EF6忽略实体类中的[表]和[列]

来自分类Dev

使用Linq返回EF6中的相关实体

来自分类Dev

在EF6中更新实体会产生主键异常

来自分类Dev

阻止在EF6中为特定实体生成表

来自分类Dev

更新 EF6 中的实体子集合

来自分类Dev

使用EF6和LINQ深度加载数据

来自分类Dev

安装了EF 6和EF 6工具的VS 2012中缺少实体框架上下文菜单

来自分类Dev

WebApi的EF6合并实体

来自分类Dev

EF6实体的通用克隆

来自分类Dev

如何结合使用“ AsNoTracking”方法在EF Core中加载实体和显式加载相关实体

来自分类Dev

实体框架集成测试无法运行单独通过的多个测试[Resharper,NUnit,EF6]

来自分类Dev

带有EF6运行时异常的实体框架'指定的成员映射无效'

来自分类Dev

EF6渴望在POCO内加载

来自分类Dev

编辑时如何验证EF4中的重复条目

来自分类Dev

编辑时如何验证EF4中的重复条目

来自分类Dev

LINQ to EF4查询中的DbIsNullExpression异常

来自分类Dev

如何使用“ Azure MFA”身份验证从Azure SQL数据库中创建数据库第一实体框架(EF6)?

来自分类Dev

EF6和业务逻辑层

来自分类Dev

EF6和预生成的视图

来自分类Dev

EF6和分层架构

Related 相关文章

热门标签

归档