首页 > 解决方案 > 删除实体的第一个请求比下一个请求更长

问题描述

我在带有 SQLite 数据库的 WPF 应用程序中使用 Entity Framework Core。

当我尝试删除一个实体时,第一次比下一次长。第一个请求可能需要几秒钟以上,而下一个请求几乎是即时的。

是否需要对数据库或 Entity Framework Core 执行编译指示或其他修复以提高第一个请求的执行时间?

标签: wpfsqliteentity-framework-core

解决方案


这是一个已知的“问题”,第一次请求很慢,因为它是 EF Core 配置表映射的时候。

您的上下文越大,第一个请求的速度就越慢。

您可以在这里做的最重要的事情是将您的 DbContext 拆分为多个部分(DDD 方法)。

一个快速的胜利是使用流利的 API 重载,它接受字符串而不是 lambda 函数,如下所示:

modelBuilder.Entity<User>().Property(nameof(User.Name));

代替 :

modelBuilder.Entity<User>().Property(o => o.Name);

如果您有数百个表和属性,这应该会有所改善。

EF Core 团队意识到了这一点,我们可能会在未来的版本中获得某种预编译或“缓存”的模型,您可以在此处此处进行跟踪。


推荐阅读