实体框架日期时间更新速度极慢

本文关键字:速度 更新 时间 框架 日期 实体 | 更新日期: 2023-09-27 18:35:59

我目前在实体框架中遇到这种情况:

using (TestEntities dataContext = DataContext)
            {
                UserSession session = dataContext.UserSessions.FirstOrDefault(userSession => userSession.Id == SessionId);
                if (session != null)
                {
                    session.LastAvailableDate = DateTime.Now;
                    dataContext.SaveChanges();
                }
            }

这一切都很完美,除了与我的预期相比,它非常慢(每秒 14 次调用,经过 100 次迭代测试)。当我通过以下命令手动更新此记录时:

dataContext.Database.ExecuteSqlCommand(String.Format("update UserSession set LastAvailableDate = '{0}' where Id = '{1}'", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fffffff"), SessionId));

我每秒接到 55 个电话,这已经足够快了。但是,当我不更新会话时。最后可用日期,但我更新了一个整数(例如会话。UserId)或带有实体框架的字符串,我每秒收到50次调用,这也足够快。只有日期时间字段非常慢。

因子 4 的差异是不可接受的,我想知道如何改进这一点,因为我不喜欢使用直接 SQL,因为我也可以使用实体框架。

我正在使用实体框架 4.3.1(也尝试过 4.1)。

实体框架日期时间更新速度极慢

只是要指出,您的 sql 命令只是一个查询,而您的 EF 命令是两个查询(获取数据,然后保存数据),因此您可以看到 2 倍的差异。

此外,您可能会发现通过按 ID 而不是即席查询来获得更好的性能。 假定会话 ID 是主键查找。

UserSession session = dataContext.UserSessions.Find(SessionId);