Entity Framework 3.1 中跟踪的开销是多少?
What is the overhead of tracking in Entity Framework 3.1?
注意:这是 What is the overhead of Entity Framework tracking? 的跟进,它询问了 Entity Framework.
的一个相当旧的版本
与我一起工作的一个团队使用了 no tracking behavior at global level 而不是上下文或查询级别。这导致存储库中出现奇怪的代码,因为所有注入的上下文实例都没有被跟踪:添加需要手动附加,更新必须显式和其他一些与导航属性相关的显式代码。
当被问及此事时,他们援引了性能原因,但没有指明来源。
我的解决方案是在上下文实例级别不使用跟踪。这将删除几乎所有与保存更改相关的繁琐代码,唯一的问题是程序员忘记为实例设置无跟踪。我的假设是在正常情况下(数百个模型的树)不会有这么大的问题。
This article 表明系统使用无跟踪和所有跟踪之间存在很大差异(内存和 CPU),但不清楚是否仅与此有关(差异似乎很大比跟踪所需的克隆数据更大)。
问题: Entity Framework 3.1 中跟踪的开销是多少?
What is the overhead of tracking in Entity Framework 3.1?
这与手动将您查询的每个实体附加到更改跟踪器完全相同。
您还可以使用 .AsTracking() 选择跟踪单个查询。
注意:这是 What is the overhead of Entity Framework tracking? 的跟进,它询问了 Entity Framework.
的一个相当旧的版本与我一起工作的一个团队使用了 no tracking behavior at global level 而不是上下文或查询级别。这导致存储库中出现奇怪的代码,因为所有注入的上下文实例都没有被跟踪:添加需要手动附加,更新必须显式和其他一些与导航属性相关的显式代码。
当被问及此事时,他们援引了性能原因,但没有指明来源。
我的解决方案是在上下文实例级别不使用跟踪。这将删除几乎所有与保存更改相关的繁琐代码,唯一的问题是程序员忘记为实例设置无跟踪。我的假设是在正常情况下(数百个模型的树)不会有这么大的问题。
This article 表明系统使用无跟踪和所有跟踪之间存在很大差异(内存和 CPU),但不清楚是否仅与此有关(差异似乎很大比跟踪所需的克隆数据更大)。
问题: Entity Framework 3.1 中跟踪的开销是多少?
What is the overhead of tracking in Entity Framework 3.1?
这与手动将您查询的每个实体附加到更改跟踪器完全相同。
您还可以使用 .AsTracking() 选择跟踪单个查询。