2016-09-30 30 views
2

我在ASP.NET Core應用程序中爲我的控制器操作之一編寫了下面的代碼,我想知道數據庫被調用了多少次。有兩個LINQ語句,一個讀取數據,另一個讀取子類。如何確認數據庫調用的數量?我使用的是默認情況下在Code First .NET Core應用程序中創建的localdb。如何在使用.NET Core和Code First時檢查在LINQ查詢中調用數據庫的次數?

public async Task<IActionResult> Edit(int? id) 
    { 
     if (id == null) 
     { 
      return NotFound(); 
     } 

     var giftCard = await _context.GiftCards.Include(g=>g.Transactions).SingleOrDefaultAsync(m => m.Id == id);     
     if (giftCard == null) 
     { 
      return NotFound(); 
     } 
     giftCard.Transactions = giftCard.Transactions.OrderBy(t => t.TransactionDate).ToList(); 
     return View(giftCard); 
    } 

回答

1

Linq允許開發人員構建一個查詢,該查詢在構建完整查詢後執行。您可以使用多個表達式構建查詢,而無需對數據庫進行單一調用。 Linq會將電話推遲到最後一刻。

在你的情況下,語句if (giftCard == null)明確要求該對象。因此,將進行數據庫調用以獲取請求的GiftCard。其次,將對已在內存中的事務執行OrderBy操作(由於Include(g=>g.Transactions))。所以,這裏沒有數據庫調用。

最終,您的整個代碼只會進行一次數據庫調用。

+0

我設法弄清楚如何檢查SQL Profiler,你是對的。只有一個電話是用我上面的代碼進行的。 – Ray

相關問題