我正在使用asp.net MVC框架并使用EntityFramework连接到数据库。有时连接到数据库时出现超时错误。这些错误非常罕见。
System.Data.Entity.Infrastructure.DbUpdateException:
An error occurred while updating the entries. See the inner exception for details. ---> System.Data.UpdateException: An error occurred while updating the entries.
See the inner exception for details. ---> System.Data.SqlClient.SqlException:
Timeout expired. The timeout period elapsed prior to
completion of the operation or the server is not responding.
var myList = new List<MyConnection>();
using (var db = new MyDb())
{
var activeConns = db.Connections
.Where(c => c.Key == tKey)
.Where(c => c.IsActive)
.ToList();
if (activeConns.Count > 0)
{
//Some custom logic
myList.add(conn);
}
return myList;
}
我没有设置任何连接超时时间。使用Entity Framework时是否有最佳做法?
如何人为地产生这种缺陷,以便测试我们的软件?
答案 0 :(得分:0)
我们在代码库中处理此类事情的方式是使用mock objects - 允许我们将实际实现(例如,数据库)替换为仅用于测试的虚假实现。 / p>
从客户端的角度来看,假的行为相同,但是我们可以更好地控制测试错误等行为的行为(例如,在第5次请求时抛出超时错误)。
Mocking Entity Framework Context是另一个SO问题,详细介绍了如何进行设置,特别是针对EntityFramework。
答案 1 :(得分:0)
您可能需要使用Reflection来抛出SQL Timeout Exception。 查看这篇文章寻求帮助: http://blog.developers.ba/post/2009/03/08/SqlException-class-doesnt-have-public-constructor.aspx