[英]ObjectTrackingEnabled and linq-to-sql
我在這里讀到,當查詢數據以進行讀取操作時,將ObjectTrackingEnabled
設置為false
會在某種程度上提高性能。 我的查詢看起來像這樣:
public return type TheQueryName (some parameters)
{
using (TheDC MyDC = new TheDC())
{
var TheQuery = (...).ToList();
return TheQuery;
}
}
1)如果我想添加性能增強,我只需添加ObjectTrackingEnabled = true;
就在行var TheQuery = (...).ToList();
之前的var TheQuery = (...).ToList();
2)另外,如果我在查詢中將ObjectTrackingEnabled
設置為true
,我是否需要在返回之前將其設置為false,或者我只是為數據上下文的特定實例設置ObjectTrackingEnabled
以及下一次我將實例化一個新的數據上下文ObjectTrackingEnabled
的值將恢復為默認狀態false
?
注意:我只計划添加ObjectTrackingEnabled = false;
閱讀操作。
謝謝。
ObjectTrackingEnabled控制您的數據上下文(在您的情況下為TheDC
)是否將在加載后跟蹤實體的更改。 您是否想要,取決於您的具體情況。
當然,在上述數據方面少做事情會讓它走得更快,但在負擔您提供跟蹤變化的代價。 為什么變更跟蹤很酷? 因為你能:
SaveChanges
並讓數據上下文找出對修改后的實體進行UPDATE查詢,對已刪除的實體進行DELETE等操作 禁用更改跟蹤后,您必須明確告知上下文更改的內容,新值的內容等。
假設您仍然不希望對象跟蹤,則在每個特定數據上下文實例上設置該屬性。 這意味着您必須:
this.Configuration.AutoDetectChangesEnabled = true;
有關詳細信息,請參閱此博文 希望這可以幫助!
在參照:
1)如果我想添加性能增強,我只需添加ObjectTrackingEnabled = true; just before the line var TheQuery = (...).ToList();
ObjectTrackingEnabled = true; just before the line var TheQuery = (...).ToList();
查詢性能增強來自NOT跟蹤。 因此,您希望在為此目的創建新的datacontext之后立即在READ
查詢上禁用此功能。
ObjectTrackingEnabled = FALSE
你的標簽和主題行說“Linq2SQL”,但你的問題是關於Entity Framwork。
對於'傳統'Linq2SQL,你需要這樣:
linq2SqlDBContext.ObjectTrackingEnabled = false;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.