我目前在使用实体框架时遇到这种情况:
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 个电话,这已经足够快了。但是,当我不更新 session.LastAvailableDate 而是使用 Entity Framework 更新整数(例如 session.UserId)或字符串时,我每秒会收到 50 个调用,这也足够快。只有日期时间字段非常慢。
因子 4 的差异是不可接受的,我想知道如何改进这一点,因为当我也可以使用实体框架时,我不喜欢使用直接 SQL。
我正在使用 Entity Framework 4.3.1(也尝试过 4.1)。