c# – ObjectTrackingEnabled和linq-to-sql

我读了 here,当查询数据进行读取操作时,将ObjectTrackingEnabled设置为false会在某种程度上提高性能.我的查询看起来像这样:
public return type TheQueryName (some parameters)
{
   using (TheDC MyDC = new TheDC())
   {
       var TheQuery = (...).ToList();

       return TheQuery;
   }
}

1)如果我想添加性能增强,我只需添加ObjectTrackingEnabled = true行;就在行var之前的TheQuery =(…).ToList();

2)另外,如果我在查询中将ObjectTrackingEnabled设置为true,我是否需要在返回之前将其设置为false,或者我只是为数据上下文的特定实例设置ObjectTrackingEnabled以及下一次我将实例化一个新的数据上下文ObjectTrackingEnabled的值将恢复为认状态false?

注意:我只计划添加ObjectTrackingEnabled = false;阅读操作.

谢谢.

解决方法

ObjectTrackingEnabled控制您的数据上下文(在您的情况下为TheDC)是否将在加载后跟踪实体的更改.您是否想要,取决于您的具体情况.

当然,让数据上下文执行的操作更少会使其更快,但代价是加重跟踪更改.为什么变更跟踪很酷?因为你能:

>从某些上下文中加载一些实体
>修改它们
>添加新的,删除其他人
>调用SaveChanges并让数据上下文找出对修改后的实体进行UPDATE查询,对已删除的实体进行DELETE查询

禁用更改跟踪后,您必须明确告知上下文更改的内容,新值的内容等.

假设您仍然不希望对象跟踪,则在每个特定数据上下文实例上设置该属性.这意味着您必须:

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

希望这可以帮助!

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...