- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
为了提高 Entity Framework 应用程序的性能,建议设置 AutoDetectChangesEnabled = false
。
MSDN 上的以下教程说明:
An alternative to disabling and re-enabling is to leave automatic detection of changes turned off at all times and either call
context.ChangeTracker.DetectChanges
explicitly or use change tracking proxies diligently. Both of these options are advanced and can easily introduce subtle bugs into your application so use them with care.
https://msdn.microsoft.com/en-us/data/jj556205.aspx
最后一部分是我关心的。
最佳答案
我对 ChangeTracking 的经验是:如果可能的话,你应该让它保持打开状态。对我来说,ChangeTracking 有两个微妙的问题(对我们来说,ChangeTracking 是全局禁用的)。首先,当添加/删除实体时,您将必须手动设置实体状态,因为通常 ChangeTracking 将实体状态设置为已修改/已添加(无论如何您必须手动设置已删除),这适用于每个实体(也包括导航中的实体)特性)。此外,在许多情况下,您必须手动设置 FK。
其次,在编辑相关实体时,您将不得不调用 ChangeTracking 或手动设置相关实体 - 根据我的经验,这非常复杂。这是因为 EF 在其上下文图中保留了相关实体的快照,并检查它的引用完整性,而不是 DbSet 条目中的实际相关条目。
为了进一步引用,我发现了一篇由 EF 开发人员 Arthur Vickers 撰写的关于 ChangeTracking 的有趣文章。
关于c# - 在 Entity Framework 中关闭 AutoDetectChangesEnabled 可能存在的风险,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37595065/
我的处境很奇怪。我阅读了 context.Configuration.AutoDetectChangesEnabled = false; 并决定使用它。但我找不到它。代码是 using (Defaul
我想知道为什么 DbContext 上的 AutoDetectChangesEnabled 属性默认设置为 false。 我想批量插入到我的上下文中,您可能知道将自动检测设置为 false 会带来更好
我有点困惑。根据我的阅读,将 DbContext.AutoDetectChangesEnabled 设置为 false 应该禁用更改跟踪,需要调用 DbContext.DetectChanges 才能
最近我在 EF 中发现了选项 AutoDetectChangesEnabled,在官方文档中指出手动处理 AutoDetectChangesEnabled 可能会导致“细微错误”。 据我所知,将更改的
为了提高 Entity Framework 应用程序的性能,建议设置 AutoDetectChangesEnabled = false。 MSDN 上的以下教程说明: An alternative t
我有一个包含图层和图层上的图形(用于绘图)的数据库。我使用 SQL Server CE,在应用程序启动时创建数据库上下文,使用 db.Layers.Local 并在应用程序退出前调用 SaveChan
知道 Foo.Id 和 Bar.Id 我如何在不从数据库加载实体的情况下创建它们的关系。 class Foo { public int Id { get; set; } public
我是一名优秀的程序员,十分优秀!