我在使用 Entity Framework 连接到我的数据库时遇到问题。尝试连接到数据库时,我随机收到以下错误...
EntityException: The underlying provider failed on Open.
The connection was not closed. The connection's current state is connecting.
为了让您了解我的设置背景,我使用的是 MVC 4 和 Ninject。我还在使用本文中描述的存储库和工作单元模式。我在 MVC 4 中使用默认的 NinjectWebCommon 文件,我的 RegisterServices 方法如下...
private static void RegisterServices(IKernel kernel)
{
kernel.Bind<IMyEntities>().To<MyEntities>();
kernel.Bind<IUnitOfWork>().To<UnitOfWork>().InRequestScope();
// UnitOfWork has a dependency on MyEntities
kernel.Bind<IAccountManager>().To<AccountManager>();
kernel.Bind<ITransactionManager>().To<TransactionManager>();
// AccountManager and TransactionManager has a dependency on UnitOfWork
}
我的页面加载正常,但页面上有 2 个导致错误的 ajax 调用。删除 ajax 调用后,永远不会发生错误。当只有 1 个 ajax 调用时,永远不会发生错误。只有当两个调用同时进行时才会发生错误。
这是 2 个不同的 Web api 控制器...
public class AccountController : ApiController
{
private readonly IAccountManager _AccountManager;
public AccountController(IAccountManager accountManager)
{
_AccountManager = accountManager;
}
public HttpResponseMessage Get()
{
IEnumerable<Account> accounts = _AccountManager.Get();
return Request.CreateResponse(HttpStatusCode.OK, accounts);
}
}
和
public class TransactionController : ApiController
{
private readonly ITransactionManager _TransactionManager;
public TransactionController(ITransactionManager transactionManager)
{
_TransactionManager = transactionManager;
}
public HttpResponseMessage Get()
{
IEnumerable<Transaction> transactions = _TransactionManager.Get();
return Request.CreateResponse(HttpStatusCode.OK, transactions);
}
}
我真的不知道在这里做什么。我已经阅读了 StackOverflow 和 Google 上与此相关的所有文章,但我找不到答案。有谁知道我能做些什么来阻止这个问题的发生?