[英]Entity Framework SaveChanges Async
我目前正在研究審計跟蹤功能並使用實體框架。
當前代碼有效,但是需要很長時間才能運行。
public class MyDbContext : DbContext {
public int SaveChanges() {
// get changes from ChangeTracker.DetectChanges()
// generate custom audit trail records
return base.SaveChanges();
}
}
我當時想在保存更改后移動審核跟蹤構建並使其異步
public int SaveChanges() {
// get changes from ChangeTracker.DetectChanges()
int ret = base.SaveChanges();
// call async function to create audit
return ret;
}
我曾嘗試使用async-await,但遇到對象已處置的問題。 我不是很習慣線程/異步調用。
有沒有一種方法可以執行“部分”返回,即父對象獲得所需的返回值以繼續其處理,而對象仍然處於活動狀態/未處置以繼續執行異步任務。
public int SaveChanges() {
// get changes from ChangeTracker.DetectChanges()
int ret = base.SaveChanges();
// partial return ret;
// continue process in generating audit trail
}
在使用Async Await的情況下,可能無法正常工作,因為后台進程的壽命超過了父進程的生命周期時,您可能會遇到類似的情況。
如果您正在運行框架4.5.2或可以升級到框架4.5.2,則此方案中的最佳選擇是使用QueueBackgroundWorkItem API。以下是使用鏈接
如果您使用的是框架4.5,則可以按照本文中的建議使用IRegisteredObject實現
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.