从我的集成测试来看:
// Act
Stopwatch w = new Stopwatch();
w.Start();
userService.Create(userDTO);
w.Stop();
public void Create(UserDTO userDTO)
{
var user = userDTO.ToEntity();
_context.Entry(user).State = EntityState.Added;
_context.SaveChanges();
}
6.2 秒执行“sql 插入”太疯狂了。我已经看到应用程序用户在第一次打开他们全年使用的项目时抱怨。所以每天他们都要等6秒钟......
我认为 EF6 的预热时间有所改善?
我能做些什么来改善这种悲惨的行为吗?
时间并不是花在插入简单的数据上。 EF 在内存中创建模型,这就是您花费的时间所在的地方。
第一次对上下文执行操作时,EF 将创建实体数据模型并执行视图生成(不是数据库视图)。看一下这篇博文.
看一看here通过使用预先生成的视图来减少模型加载时间来提高性能。
为了提高性能,您可以在启动应用程序时初始化上下文异步。注意多线程问题。
using (var context = new MyContext())
{
context.Database.Initialize(false);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)