Я кодировал свой собственный крошечный статический класс DAL для .NET Compact Framework и локального SQL Server, который делает именно то, что мне нужно; GetTable (SQL, params), Exec (SQL, params), ExecScalar (SQL, Params) и т. Д. Я хотел сделать все с помощью SQL, поэтому я так и сделал, если есть лучшие способы обработки SQL-соединений в C #, кроме ORM- пожалуйста, дай мне знать. Вот как я предоставляю открытый доступ к объекту SQLConnection в моем классе DAL:
public static SqlConnection Conn()
{
if (ConnStr == "")
Defaults();
try
{
if (conn == null)
conn = new SqlConnection(ConnStr);
if (conn.State != ConnectionState.Open)
{
conn.Open();
Execute("SET DATEFORMAT DMY",null);
}
return conn;
}
catch
{
System.Windows.Forms.MessageBox.Show("Unable to connect to DB");
}
return null;
}
Приложение, которое я кодирую, используется на мобильной Windows CE 5.0. Проблема в том, что когда пользователь отключается от беспроводной сети, а затем снова подключается, строка if (conn.State != ConnectionState.Open)
не выполняется, и приложение выдает общее исключение базы данных, ничего больше. Как мне это исправить?
Редактировать: Оказывается, исключение вызывается такими функциями, как GetTable (). Я могу справиться с этим, используя try-catch в каждой функции, но, к сожалению, в Compact Framework каждая ошибка sql называется «SqlException». Как я могу различить проблемы с подключением и проблемы с запросами?