我正在使用 Entity Framework 4.1 开发一个 ASP.Net MVC 3 Web 应用程序。我最近将应用程序上传到我的测试服务器,我注意到 ELMAH 发送的错误电子邮件指出
System.Data.SqlClient.SqlException 超时已过期。在操作完成之前超时时间已过或服务器没有响应。
下面显示了我的一些代码。
控制器
public ActionResult VerifyEmail(int uid, string vid)
{
var userList = _userService.VerifyEmail(uid,vid).ToList();
}
服务
public IList<User> VerifyEmail(int uid, string emailvcode)
{
return _uow.User.Get(u => u.userID == uid && u.emailVerificationCode == emailvcode).ToList();
}
工作单元
public class UnitOfWork : IUnitOfWork, IDisposable
{
readonly LocumEntities _context = new LocumEntities();
private GenericRepository<User> _user = null;
public IGenericRepository<User> User
{
get
{
if (_user == null)
{
_user = new GenericRepository<User>(_context);
}
return _user;
}
}
}
通用存储库
public IList<TEntity> Get(Expression<Func<TEntity, bool>> filter = null,Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderBy = null,string includeProperties = "")
{
IQueryable<TEntity> query = dbSet;
if (filter != null)
{
query = query.Where(filter);
}
foreach (var includeProperty in includeProperties.Split
(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
{
query = query.Include(includeProperty);
}
if (orderBy != null)
{
return orderBy(query).ToList();
}
else
{
return query.ToList();
}
}
当Service 方法中的行尝试执行时,有时会发生超时错误
return _uow.User.Get(u => u.userID == uid && u.emailVerificationCode == emailvcode).ToList();
此错误并非每次都发生,只是偶尔发生,但是,我不明白为什么此查询将返回用户列表或 NULL 列表。
谁能从我的代码中发现为什么会发生这种情况?
任何反馈都将不胜感激,因为我不知道为什么会这样。
谢谢。