第一个实体框架6非查询的六秒预热时间

Pas*_*cal 4 entity-framework entity-framework-6

从我的集成测试:

// 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();
}
Run Code Online (Sandbox Code Playgroud)

6,2秒做"sql插入"是疯了.我已经看到应用程序用户在第一次打开他们使用全年的项目时抱怨.所以每天都要等6秒......

我认为EF6的预热时间有所改善?

我能做些什么来改善这种悲惨的行为吗?

Mer*_*aya 5

不花时间插入简单数据.EF在内存中创建模型,即您花费的时间.

EF创建实体数据模型并在您第一次对上下文执行操作时执行视图生成(而不是数据库视图).看看这篇博客文章.

通过使用预先生成的视图来减少模型加载时间,请查看此处以提高性能.

要提高性能,可以在启动应用程序时初始化上下文异步.注意多线程问题.

using (var context = new MyContext())
{
    context.Database.Initialize(false);
}
Run Code Online (Sandbox Code Playgroud)


Vah*_*idN 2

尝试适用于 C# 的 EF6 CodeFirst 视图生成 T4 模板。预生成的视图将必须在运行时完成的工作转移到设计时,从而缩短了应用程序的启动时间。更多信息