上的情景只是想人民的意見:實體框架更改跟蹤(只讀)查詢
難道是更有效的:
- 選擇具有改變跟蹤記錄關閉,然後如果需要要更新重新連接對象的上下文更新?
- 或 -
- 選擇具有改變跟蹤記錄打開,以防萬一記錄需要更新?
或者這是微不足道的?
我的方案是我們有一個健康檢查例程,每10秒對錶進行一次選擇並且很少需要更新(只有在部署了新版本時才更新記錄)。那麼我們是否應該在打開變更追蹤的情況下進行健康檢查?
上的情景只是想人民的意見:實體框架更改跟蹤(只讀)查詢
難道是更有效的:
或者這是微不足道的?
我的方案是我們有一個健康檢查例程,每10秒對錶進行一次選擇並且很少需要更新(只有在部署了新版本時才更新記錄)。那麼我們是否應該在打開變更追蹤的情況下進行健康檢查?
根據您的使用情況,我認爲No-tracking
查詢會給您的應用程序big performance boost
。
所以,你可以做,使用AsNoTracking()
using (var context = new HelthContext())
{
var patients = context.Patients.AsNoTracking().ToList();
}
如果你有一個entity
您在數據庫知道already exists
但它是not currently being tracked
由context
,那麼你可以告訴context
使用Attach
跟蹤實體方法DbSet
如下所示。
var existingPatient = new Patient { Id = 1, Name = "Patient 1" };
using (var context = new HelthContext())
{
context.Patients.Attach(existingPatient);
// Do some more work...
context.SaveChanges();
}
同樣的方法,但我在attach,'context.Entry(existingPatient).State = EntityState.Modified;'之後添加此行,我認爲這是必需的,以告知上下文該數據用於更新而不是插入,對吧? – Monah
這個用例是不同的。也就是說,如果你有一個'entity',你知道已經存在於數據庫中,但是可能已經做出了哪些修改,那麼你可以告訴'context來附加'entity和set其狀態爲修改「。即「將現有但已修改的實體附加到上下文」。 @HadiHassan – Sampath
我已添加好**參考** above.you也可以看到:) @HadiHassan – Sampath
可能,這可能幫助:https://msdn.microsoft.com/en-us/data/hh949853.aspx#5我使用 – tschmit007