正如标题所示,我在使用实体框架对SQL Server数据库进行第一次查询时遇到问题.我试过寻找答案,但似乎没有人真正找到解决方案.
测试是在使用Entity Framework 6的Visual Studio 2012中完成的,我还使用了T4视图模板来预编译视图.该数据库位于SQL Server 2008上.我们有大约400个POCO(400个映射文件),在数据库表中只有100行数据.
捕获后是我的测试代码和结果.
static void Main(string[] args){
Stopwatch st=new Stopwatch();
st.Start();
new TestDbContext().Set<Table1>.FirstOrDefault();
st.stop();
Console.WriteLine("First Time "+st.ElapsedMilliseconds+ " milliseconds");
st.Reset();
st.Start();
new TestDbContext().Set<Table1>.FirstOrDefault();
st.stop();
Console.WriteLine("Second Time "+st.ElapsedMilliseconds+ " milliseconds");
}
Run Code Online (Sandbox Code Playgroud)
检测结果
First Time 15480 milliseconds
Second Time 10 milliseconds
Run Code Online (Sandbox Code Playgroud) 我想我的Web应用程序会在一段时间后关闭.
如果我在5分钟内没有使用该应用程序,它将返回一个新会话.会话超时设置为720分钟,因此不会出现问题.
它可能是应用程序池中的设置还是类似的东西?我认为这是某种资源管理.我使用IIS 7.0
我是一个带服务器的笨蛋,所以如果我在这里错过了明显的话,请耐心等待.
我正在处理 Entity Framework Core DbContext 预热时间。我有非常大的 DbContext,我正在使用 AddDbContextPool() 选项注册 DbContexes,该选项将 DbContext 注册为单例,应用程序重用它。
在早期版本的 EF 中,为了加快应用程序启动时间,应用了以下解决方法:使用缓存 DbModelStore、生成预编译视图和/或使用 NGen 生成实体框架的预编译版本以避免抖动。
但是,我没有看到在 Entity Framework Core 上应用这些的任何有效方法。我什至找不到任何其他方法来避免 DbContext 的初始启动/蠕虫启动时间。
我们的应用程序的蠕虫启动时间大约为 30+ 秒。
当我的应用程序第一次启动时,我尝试初始化 DbContextes 但这似乎不是一个优雅或事件负担得起的解决方案。
Entity Framework Core 团队 (Github) 上有对编译视图的功能请求,但是此功能没有截止日期。
我需要知道是否有任何我可以应用的解决方法和/或解决方案。
谢谢