2017-10-11 227 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

回答