亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

.AsNoTracking()有什么區別?

.AsNoTracking()有什么區別?

九州編程 2019-10-15 14:30:18
我對.AsNoTracking()擴展名有疑問,因為這都是很新的,也很令人困惑。我正在為網站使用每個請求的上下文。我的許多實體都不會更改,因此不需要跟蹤,但是在以下情況下,我不確定數據庫的內容,甚至在這種情況下是否會有所不同。這個例子是我目前正在做的:context.Set<User>().AsNoTracking()// Step 1) Get usercontext.Set<User>()// Step 2) Update user與上面相同,但是.AsNoTracking()從步驟1中刪除了:context.Set<User>();// Step 1) Get usercontext.Set<User>()// Step 2) Update user步驟1和步驟2使用相同的上下文,但發生在不同的時間。我無法解決的是是否有任何區別。由于第2步是更新,因此我猜兩者都將兩次訪問數據庫。誰能告訴我有什么區別?
查看完整描述

3 回答

?
達令說

TA貢獻1821條經驗 獲得超6個贊

參見本頁實體框架和AsNoTracking


AsNoTracking會做什么

實體框架公開了許多性能調整選項,以幫助您優化應用程序的性能。這些調整選項之一是.AsNoTracking()。通過這種優化,您可以告訴您Entity Framework不要跟蹤查詢結果。這意味著Entity Framework不對查詢返回的實體執行任何其他處理或存儲。但是,這也意味著您必須先將這些實體重新附加到跟蹤圖上,才能更新它們。


使用AsNoTracking可以顯著提高性能


查看完整回答
反對 回復 2019-10-15
?
守候你守候我

TA貢獻1802條經驗 獲得超10個贊

沒有跟蹤LINQ到實體查詢


當您的查詢用于讀取操作時,建議使用AsNoTracking()。在這些情況下,您可以取回您的實體,但是它們不會被您的上下文跟蹤。這可以確保最少的內存使用和最佳性能


優點


與常規LINQ查詢相比,性能得到了提高。

完全物化的對象。

使用編程語言內置的語法最簡單地編寫。

缺點


不適合CUD操作。

某些技術限制,例如:與Entity SQL中的簡單OUTER JOIN語句相比,對OUTER JOIN查詢使用DefaultIfEmpty的模式所導致的查詢更為復雜。

您仍然不能將LIKE與常規模式匹配一起使用。


查看完整回答
反對 回復 2019-10-15
  • 3 回答
  • 0 關注
  • 1666 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號