entity-framework - 第一个 Entity Framework 6 非查询的 6 秒预热时间

标签 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();
}

6,2 秒做一次“sql 插入”是疯狂的。我已经看到应用程序用户在他们第一次打开他们全年使用的项目时提示。所以每天他们要等6秒……

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

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

最佳答案

时间不是花在插入简单数据上的。 EF 在内存中创建模型,这就是你花费的时间。

EF 创建实体数据模型并在您第一次对上下文执行操作时执行 View 生成(而不是数据库 View )。看看this blog post .

看看here通过使用预先生成的 View 来减少模型加载时间来提高性能。

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

using (var context = new MyContext())
{
    context.Database.Initialize(false);
}

关于entity-framework - 第一个 Entity Framework 6 非查询的 6 秒预热时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20565679/

相关文章:

entity-framework - 如何使用 Azure AD/OpenId 进行身份验证但使用基于 Entity Framework 的用户/角色数据

c# - 如何在 linq to entities 中为几种类型编写通用 where?

entity-framework - 首先从数据库模型自动更新代码,这可能吗?

c# - Entity Framework (EF6) 插入或更新属性(如果存在)

c# - 使用内部集合创建 where 谓词的动态查询

c# - 如何更新我的 Entity Framework

asp.net - 使用 Entity Framework 在 ASP.Net 中创建报告

c# - 使用EF通过id删除一条记录,如果id不存在则抛出异常

entity-framework - 使用 Angular 2 时是否需要在 Typescript 中复制 Entity Framework 类?

entity-framework - Entity Framework 错误 : The field X is required