2017-10-11 224 views
2

需要一段時間(3分鐘+)'創建/編譯'我的DbContext。 Web服務器在大約5秒內啓動,但是當我對數據庫進行第一次查詢時,EF 2.0必須在內存中「建立/創建/編譯」數據庫或者其他東西,我想呢?接下來的請求幾乎是即時的。這是DbContext的數據庫優先創建,數據庫已經存在於MSSQL中並且有數據。 DbContext包含大約500個帶有關係的DbSet。啓動/第一個查詢非常慢

有沒有辦法通過在運行Web服務器之前(在開發時)執行我的實體框架的DbContext的創建(映射?)來加速它,創建它所需的文件/映射,所以第一個請求是太快了?

+2

延遲加載還不能在實體框架的核心2.0是否存在?每次應用程序啓動時,不是每個請求。 – AppSum

+0

如果您使用IIS託管,請查看以下內容:https://weblogs.asp.net/scottgu/auto-start-asp-net-applications-vs-2010-and-net-4-0-series或https://www.codeproject.com/Articles/795265/IIS-Asp-net-warm-up-Auto-Start-Application否則,你的網絡服務器可能支持類似的技術。無論如何,這是網絡服務器必須發起的事情。您的應用程序在webserver決定之前不會執行任何操作,因此無法單獨在代碼中執行任何操作。 – grek40

+0

Web應用程序本身在大約5秒內啓動,這是可以接受的。這是通過EF Core 2.0的第一個查詢需要3分鐘+。如果我只顯示一個HTML頁面,它會在大約5秒後加載。如果我使用ADO.NET,則查詢會在2秒後顯示。這是第一個需要3分鐘+的查詢(即使是簡單的db.Articles.FirstOrDefault()),隨後的查詢(任何查詢)需要100ms的正常時間。 – AppSum

回答