Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 实体框架3.1中的跟踪开销是多少?_Performance_Entity Framework_Entity Framework Core_Ef Core 3.1_Change Tracking - Fatal编程技术网

Performance 实体框架3.1中的跟踪开销是多少?

Performance 实体框架3.1中的跟踪开销是多少?,performance,entity-framework,entity-framework-core,ef-core-3.1,change-tracking,Performance,Entity Framework,Entity Framework Core,Ef Core 3.1,Change Tracking,注意:这是一个后续问题,询问的是Entity Framework的一个相当旧的版本 我正在与之合作的团队中有一位使用过,而不是在上下文或查询级别。这会导致存储库中出现奇怪的代码,因为没有跟踪所有注入的上下文实例:添加需要手动附加、更新必须显式,以及一些其他与导航属性相关的显式代码 当被问及这一点时,他们调用了性能原因,但没有指明来源 我的解决方案是在上下文实例级别不使用跟踪。这将删除几乎所有与保存更改相关的繁琐代码,唯一的问题是程序员忘记为实例设置不跟踪。我的假设是,在正常情况下(数百个模型的树

注意:这是一个后续问题,询问的是Entity Framework的一个相当旧的版本

我正在与之合作的团队中有一位使用过,而不是在上下文或查询级别。这会导致存储库中出现奇怪的代码,因为没有跟踪所有注入的上下文实例:添加需要手动附加、更新必须显式,以及一些其他与导航属性相关的显式代码

当被问及这一点时,他们调用了性能原因,但没有指明来源

我的解决方案是在上下文实例级别不使用跟踪。这将删除几乎所有与保存更改相关的繁琐代码,唯一的问题是程序员忘记为实例设置不跟踪。我的假设是,在正常情况下(数百个模型的树),这不会有什么大不了的

表明无跟踪的系统使用与跟踪的所有内容之间存在巨大差异(内存和CPU),但不清楚这是否仅与此相关(差异似乎远远大于跟踪所需的克隆数据)

问题:实体框架3.1中的跟踪开销是多少

实体框架3.1中的跟踪开销是多少

这与手动将查询的每个实体附加到更改跟踪器完全相同


您还可以选择使用来跟踪单个查询。

感谢您提供的快速信息。如果可以的话,我想了解更多细节。更具体地说,内存和CPU使用开销(我预计内存会增加一倍或更多,但CPU使用量不应该太大)。在这种情况下,
AsTracking
是一个很好的建议,因为它允许一个良好的保存功能,同时保持全局无跟踪。如果您需要它来做出决策,您应该在您的场景中衡量性能。更改跟踪的成本是被跟踪实体数量的函数,因此,如果您没有检索大量实体,或者没有一个具有较长生命周期的DbContext实例,那么更改跟踪的成本通常可以忽略不计。您使跟踪的开启或关闭看起来像是一成不变的。但你在驾驶座上。您可以实例化相同的上下文类,可以使用跟踪,也可以不使用跟踪。例如,在断开连接的场景中,读取而不跟踪,更新而跟踪。仅仅因为EF被告知不要附加实体而手动附加它们是非常愚蠢的。