【发布时间】:2012-06-01 16:36:38
【问题描述】:
我目前在使用 Entity Framework 时遇到这种情况:
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)。
【问题讨论】:
-
尝试使用 MiniProfiler(在 NuGet 中搜索)。它将向您显示 SQL EF 生成和执行时间,以便您查明问题所在。
-
感谢您的提示,我不知道。我会调查的。
-
如果你找出问题所在,请花两分钟在这里写下你自己问题的答案:)
标签: c# wcf entity-framework datetime entity-framework-4