wpf - 删除实体的第一个请求比下一个请求更长
问题描述
我在带有 SQLite 数据库的 WPF 应用程序中使用 Entity Framework Core。
当我尝试删除一个实体时,第一次比下一次长。第一个请求可能需要几秒钟以上,而下一个请求几乎是即时的。
是否需要对数据库或 Entity Framework Core 执行编译指示或其他修复以提高第一个请求的执行时间?
解决方案
这是一个已知的“问题”,第一次请求很慢,因为它是 EF Core 配置表映射的时候。
您的上下文越大,第一个请求的速度就越慢。
您可以在这里做的最重要的事情是将您的 DbContext 拆分为多个部分(DDD 方法)。
一个快速的胜利是使用流利的 API 重载,它接受字符串而不是 lambda 函数,如下所示:
modelBuilder.Entity<User>().Property(nameof(User.Name));
代替 :
modelBuilder.Entity<User>().Property(o => o.Name);
如果您有数百个表和属性,这应该会有所改善。
EF Core 团队意识到了这一点,我们可能会在未来的版本中获得某种预编译或“缓存”的模型,您可以在此处或此处进行跟踪。
推荐阅读
- node.js - 我可以从 reactjs 应用程序中的 nodejs 服务器访问 cookie 数据吗?
- java - 将图形对象从服务器发送到客户端
- kubernetes - 如何从另一个现有 pod 创建一个新的 Kubernetes pod?
- vue.js - 自定义单选按钮上的 Vue v-model
- java - 使用正则表达式在特定字符后捕获部分字符串
- javascript - 节点异步问题
- python-3.x - ValueError: int() 以 10 为底的无效文字:'sdsd'
- python - Python 正则表达式将日期提取到数据框中的新列
- c - NPTL 中的线程如何退出?
- reactjs - 反应组件中的问题