簡體   English   中英

C# 應用程序到 MS SQL 數據庫調用堆棧

[英]C# application to MS SQL database callstack

我繼承了一個帶有 EFv4/.net 4.0 的 C# 應用程序。

使用 SQL Server Profiler 分析一些數據庫調用時,我看到一些來自應用程序本身的意外數據庫調用(沒有其他用戶,沒有其他應用程序或進程在這里混合)。

我有一種情況,當在帶有查詢信息的 WinForm 對話框中顯示時,兩個確切的查詢被觸發到數據庫。 (因為它的邏輯,我想避免第二次調用......或者至少了解它來自哪里)。

第一個查詢在表單的構造函數處觸發,其中 DataSource 綁定到DbContext.ClassToShow

但是在顯示此表單后,第二個查詢在某處被觸發(ShowDialog())。 但是不知道具體在哪里...

所以我的問題是:

我應該在哪里設置斷點以便在 EntityFramework 觸發任何查詢之前停止應用程序?

我已經嘗試過 DbContext.ClassToShow 屬性,但它只是第一次停止。

編輯:

我嘗試更改綁定的分配方式:

siteBindingSource.DataSource = mDbContext.Site;

到:

var sites = new List<Site>(); var dbSites = mDbContext.Site; sites.AddRange(dbSites); siteBindingSource.DataSource = sites;

我還注意到,通過數據庫實體在 Visual Studio 中搜索會觸發數據庫查詢。

仍然適用同樣的問題,如何區分查詢數據庫的不同位置?

似乎數據綁定系統可以多次枚舉數據源對象。 每個枚舉都會再次執行查詢。 實體框架查詢對象不緩存其結果。

出於這個原因,您必須具體化查詢(例如使用ToList() )。

出於錯誤處理和事務管理的原因,這也更好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM