gpt4 book ai didi

c# - ObjectTrackingEnabled 和 linq-to-sql

转载 作者:太空狗 更新时间:2023-10-29 21:09:43 26 4
gpt4 key购买 nike

我读了here在为读取操作查询数据时,将 ObjectTrackingEnabled 设置为 false 会在一定程度上提高性能。我的查询如下所示:

public return type TheQueryName (some parameters)
{
using (TheDC MyDC = new TheDC())
{
var TheQuery = (...).ToList();

return TheQuery;
}
}

1) 如果我想添加性能增强功能,是否只需在 var TheQuery = (. ..).ToList();

2) 此外,如果我在查询中将 ObjectTrackingEnabled 设置为 true,我需要在返回之前将其设置为 false 还是我我只是为数据上下文的特定实例设置 ObjectTrackingEnabled,接下来我将实例化一个新的数据上下文,ObjectTrackingEnabled 的值将恢复为默认状态错误

注意:我只打算添加 ObjectTrackingEnabled = false; 来读取操作。

谢谢。

最佳答案

ObjectTrackingEnabled 控制您的数据上下文(在您的情况下为 TheDC)是否会在实体加载后跟踪它们的更改。是否需要取决于您的具体情况。

自然地,让数据上下文做更少的事情会使其运行得更快,但代价是跟踪更改的负担。为什么更改跟踪很酷?因为您可以:

  1. 从一些上下文加载一些实体
  2. 修改它们
  3. 添加新的,删除其他的
  4. 调用 SaveChanges 并让数据上下文计算出对修改的实体执行 UPDATE 查询,对已删除的实体执行 DELETE 等

禁用更改跟踪后,您必须明确告诉上下文发生了什么更改、新值是什么等。

假设您仍然不想要对象跟踪,该属性是在每个特定的数据上下文实例上设置的。这意味着您必须:

  1. 为您创建的每个数据上下文手动设置
  2. 在上下文的构造函数中将其设置为上下文的默认值,如下所示:this.Configuration.AutoDetectChangesEnabled = true;参见this blog post详情

希望这对您有所帮助!

关于c# - ObjectTrackingEnabled 和 linq-to-sql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13021013/

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