我有這種情況目前正在與實體框架:實體框架的DateTime更新速度極慢
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,當我也可以使用實體框架。
我正在使用實體框架4.3.1(也試過4.1)。
嘗試使用MiniProfiler(在NuGet中搜索)。它會告訴你SQL EF生成和執行時間,所以你可以精確地指出問題所在。 –
感謝您的提示,我不知道它。我會研究它。 –
如果你找出問題,請花兩分鐘的時間在這裏寫下你自己的問題的答案:) –