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();
}
}
サービス メソッド内の行が実行しようとしているときに、タイムアウトエラーが発生することがあります。
return _uow.User.Get(u => u.userID == uid && u.emailVerificationCode == emailvcode).ToList();
このエラーは毎回発生するわけではなく、たまにしか発生しませんが、このクエリがユーザーのリストまたは NULL リストを返すため、理由がわかりません。
なぜこれが起こっているのか、誰でも私のコードから見つけることができますか?
なぜこれが起こっているのかわからないので、フィードバックをいただければ幸いです。
ありがとう。