实体框架核心第一次加载缓慢

时间:2018-09-20 11:20:08

标签: c# asp.net-core .net-core ef-core-2.0

我正在处理Entity Framework Core DbContext预热时间。我有非常大的DbContext,并且正在使用AddDbContextPool()选项注册DbContexes,该选项将DbContext注册为单例并由应用程序重用。

在较早版本的EF中,

可以应用以下工作循环来加快应用程序的启动时间:使用缓存的DbModelStore,生成预编译的视图和/或使用NGen生成实体框架的预编译版本,以免发生抖动。

但是,我没有看到在Entity Framework Core上应用这些方法的任何有效方法。我什至找不到其他方法来避免DbContext的初始启动/蠕虫启动时间。

我们的应用程序的蠕虫启动时间约为30秒钟以上。

我尝试在我的应用程序首次启动时初始化DbContextes,但这似乎不是一个优雅的或事件可承受的解决方案。

存在对Entity Framework Core团队(Github)的已编译视图的功能请求,但是该功能没有最后期限。

我需要知道是否可以应用任何解决方法和/或解决方案。

谢谢

2 个答案:

答案 0 :(得分:0)

因为EF配置表映射,所以第一次启动很慢。您可以做的最重要的事情是重新设计dbcontext。您必须将配置分成不同的上下文。一个上下文必须包含很少的实体,这些实体在含义上相关联(就像在DDD中所做的那样)。例如。 UserDbContext(用于授权。提供用户,令牌,personalData ...),CustomerDbContext(提供所有客户数据:客户,联系人,合同,报价...)

答案 1 :(得分:0)

由于我们有一个非常大的dbContext,或者我应该说有,我在dbContext预热时间遇到了困难。为了解决这个问题,我们现在为应用程序的不同部分提供了多个dbContext。确实强烈推荐。

然后使用旧的数据批注[NotMapped]属性关闭您的dbcontexts。 DBContext slow when initially building