Entity Framework DateTime update extremely slow
- by Phyxion
I have this situation currently with Entity Framework:
using (TestEntities dataContext = DataContext)
{
UserSession session = dataContext.UserSessions.FirstOrDefault(userSession => userSession.Id == SessionId);
if (session != null)
{
session.LastAvailableDate = DateTime.Now;
dataContext.SaveChanges();
}
}
This is all working perfect, except for the fact that it is terribly slow compared to what I expect (14 calls per second, tested with 100 iterations). When I update this record manually through this command:
dataContext.Database.ExecuteSqlCommand(String.Format("update UserSession set LastAvailableDate = '{0}' where Id = '{1}'", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fffffff"), SessionId));
I get 55 calls per second, which is more than fast enough. However, when I don't update the session.LastAvailableDate but I update an integer (e.g. session.UserId) or string with Entity Framework, I get 50 calls per second, which is also more than fast enough. Only the datetime field is terrible slow.
The difference of a factor 4 is unacceptable and I was wondering how I can improve this as I don't prefer using direct SQL when I can also use the Entity Framework.
I'm using Entity Framework 4.3.1 (also tried 4.1).