栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

与ObjectContext相比,为什么在EF 4.1中插入实体这么慢?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

与ObjectContext相比,为什么在EF 4.1中插入实体这么慢?

正如Ladislav在评论中已经指出的那样,您需要禁用自动更改检测以提高性能:

context.Configuration.AutoDetectChangesEnabled = false;

默认情况下,

DbContext
API中启用了此更改检测。

DbContext
行为与
ObjectContext
API
如此不同的原因是,启用自动更改检测后,与API的函数相比,API的内部函数
DbContext
要调用的更多。
DetectChanges``ObjectContext

在这里,您可以找到

DetectChanges
默认调用的那些函数的列表。他们是:

  • Add
    Attach
    Find
    Local
    ,或
    Remove
    成员
    DbSet
  • GetValidationErrors
    Entry
    SaveChanges
    成员
    DbContext
  • Entries
    对方法
    DbChangeTracker

特别是导致您体验不佳的

Add
呼叫
DetectChanges

与此形成对比的是,

ObjectContext
API
DetectChanges
仅自动调用,
SaveChanges
而不会自动调用
AddObject
上述其他相应方法。这就是为什么 默认
性能
ObjectContext
更快的原因。

他们为什么

DbContext
在这么多功能中引入了这种默认的自动更改检测功能?我不确定,但是
DetectChanges
在适当的时候禁用它并手动调用似乎是高级的,并且可以轻松地将细微的错误引入您的应用程序,因此请谨慎使用[it]。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/432978.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号