gpt4 book ai didi

entity-framework - 是什么触发 Entity Framework 修复导航属性?

转载 作者:行者123 更新时间:2023-12-03 07:28:52 25 4
gpt4 key购买 nike

我找不到很好的文档来说明 Entity Framework 在设置外键时决定查找正确的相关对象的确切原因。

我正在使用延迟加载(但不更改跟踪)代理。设置外键然后获取导航属性值会返回 null,即使相关导航对象已加载并位于 DbContext 中也是如此。

调用 DetectChanges 可以工作,但看起来很重。还有其他方法可以在 Entity Framework 中提供线索来进行修复吗?

最佳答案

你是对的。 DetectChanges 是触发关系修复的方法。如果您出于某种原因希望修复关系,请调用 DetectChanges

但是,当您执行以下方法时,DetectChanges 也会由 EF 本身调用:

  • DbSet.Add
  • DbSet.Find
  • DbSet.Remove
  • DbSet.Local
  • DbContext.SaveChanges
  • DbSet.Attach
  • DbContext.GetValidationErrors
  • DbContext.Entry
  • DbChangeTracker.Entries
  • 针对 DbSet 运行任何 LINQ 查询

(摘自 Lerman 和 Miller 的书 DbContext,第 60 页)。

如您所见,设置外键值后对 EF 执行的几乎所有操作都会调用 DetectChanges,因此如果您之后还有其他有用的操作要做,请先执行这些操作并保存一次 DetectChanges 调用。

关于entity-framework - 是什么触发 Entity Framework 修复导航属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20692031/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com