2014-01-15 3 views
2

Я использую инфраструктуру MVC asp.net и используя EntityFramework для подключения к базе данных. Иногда при подключении к базе данных я получаю ошибку тайм-аута. Эти ошибки очень редки.Искусственно создать ошибку таймаута соединения в .net

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

То, как мы обрабатывали такие вещи в нашей базе кода, является использование mock objects - что позволяет нам заменять реальную реализацию (например, базу данных) поддельной реализацией, используемой только для тестирования.

С точки зрения клиента, поддельный ведет себя одинаково, но мы имеем больше контроля над поведением для тестирования таких вещей, как ошибки (например, выведите ошибку таймаута на 5-й запрос).

Mocking Entity Framework Context - еще один вопрос о том, как это установить, в частности, для EntityFramework.

0

Возможно, вам придется использовать Reflection для исключения исключения таймаута SQL. Проверьте эту статью: http://blog.developers.ba/post/2009/03/08/SqlException-class-doesnt-have-public-constructor.aspx

+0

Благодарим за сообщение. Я не хочу бросать исключение SQL. То, что я хочу достичь, - это при создании SQL-соединения или выполнении команды SQL, я хочу, чтобы система генерировала сообщения Connection или Command Timeout. – SharpCoder

Смежные вопросы