Я использую Codesmith для подключения к базе данных, время от времени выдает следующее исключение. Также в этом классе есть синглтон
То, что я полагаю, это то, что codemith автоматически открывает и закрывает соединение с базой данных.
Ошибка в *. Пример: System.InvalidOperationException: ExecuteReader
требуется открытое и доступное соединение. Ток соединения
состояние закрыто. в
System.Data.SqlClient.SqlCommand.ValidateCommand (метод String,
Логическое асинхронное) в
System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior
cmdBehavior, RunBehavior runBehavior, логическое returnStream, строка
метод, завершение TaskCompletionSource 1, время ожидания Int32, Task & task,
Boolean & usedCache, Boolean asyncWrite, Boolean inRetry) в
System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior
cmdBehavior, RunBehavior runBehavior, логическое returnStream, строка
метод) в
System.Data.SqlClient.SqlCommand.ExecuteReader (CommandBehavior
поведение, метод String) в
System.Data.Linq.SqlClient.SqlProvider.Execute (запрос выражения,
QueryInfo queryInfo, IObjectReaderFactory factory, Object []
parentArgs, Object [] userArgs, ICompiledSubQuery [] subQueries, Object
lastResult) в
System.Data.Linq.SqlClient.SqlProvider.ExecuteAll (запрос выражения,
QueryInfo [] queryInfos, фабрика IObjectReaderFactory, Object []
userArguments, ICompiledSubQuery [] subQueries) в
System.Data.Linq.SqlClient.SqlProvider.CompiledQuery.Execute (IProvider
провайдер, Object [] arguments) в
System.Data.Linq.CommonDataServices.DeferredSourceFactory 1.ExecuteKeyQuery (Object []
keyValues) в
System.Data.Linq.CommonDataServices.DeferredSourceFactory 1.Execute (Object
экземпляр) в
System.Linq.Enumerable.SingleOrDefault [TSource] (источник IEnumerable 1)
в System.Data.Linq.EntityRef`1.get_Entity () в
Datacontext.Data.DataSource.get_Delimiter () в
C: * \ DataSource.Generated.cs: строка 407 в
Datacontext.Data.Managers.DBManager.GetDelimiterOfAnalyser () в
C: * \ DBManager.cs: строка 537
Код:
/// <summary>
/// Returns DelimiterOfAnalyser
/// </summary>
/// <returns></returns>
public Dictionary<string, string> GetDelimiterOfAnalyser()
{
Dictionary<string, string> delimiters = new Dictionary<string, string>();
try
{
foreach (var delimiter in dataContext.DataSource.Where(a => a.TypeId == 1).ToList())
{
if (!delimiters.ContainsKey(delimiter.Name))
{
delimiters.Add(delimiter.Name, delimiter.Delimiter.Value);
}
}
}
catch (Exception ex)
{
logger.Error("Error in GetDelimiterOfAnalyser. Ex: " + ex);
}
return delimiters;
}
public static DBManager GetInstance()
{
try
{
if (dbMgr == null)
{
dbMgr = new DBManager();
}
dataContext = new DataContext();
}
catch (Exception ex)
{
logger.Error(ex);
}
return dbMgr;
}