Codesmith:在*中出错。Ex:System.InvalidopeException:ExecuteReader需要一个开放且可用的Con。con';s的当前状态为关闭(C#,SQL)
我使用Codesmith进行数据库连接,它时不时抛出下面的异常。这个班也有单身汉 我假设codesmith会自动打开和关闭与数据库的连接 *中的错误。Ex:System.InvalidOperationException:ExecuteReader 需要开放且可用的连接。连接的电流 该州已关闭。在 System.Data.SqlClient.SqlCommand.ValidateCommand(字符串方法, 布尔异步)at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior、RunBehavior、布尔返回流、字符串 方法,TaskCompletionSource 1完成,Int32超时,任务和任务, Boolean&在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior、RunBehavior、布尔返回流、字符串 方法)在 System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior 行为,字符串方法)在 System.Data.Linq.SqlClient.SqlProvider.Execute(表达式查询, QueryInfo QueryInfo,IObjectReaderFactory工厂,对象[] parentArgs,对象[]用户Args,ICompiledSubQuery[]子查询,对象 最后结果)在 System.Data.Linq.SqlClient.SqlProvider.ExecuteAll(表达式查询, QueryInfo[]QueryInfo,IObjectReaderFactory工厂,对象[] userArguments,ICompiledSubQuery[]子查询)位于 System.Data.Linq.SqlClient.SqlProvider.CompiledQuery.Execute(IProvider 提供程序,对象[]参数)位于 System.Data.Linq.CommonDataServices.DeferredSourceFactory 1.ExecuteKeyQuery(对象[]) 关键字值)在 System.Data.Linq.CommonDataServices.DeferredSourceFactory 1.Execute(对象 (例如)在 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.getDelimiteRofAnalyzer() C:*\DBManager.cs:第537行 代码:Codesmith:在*中出错。Ex:System.InvalidopeException:ExecuteReader需要一个开放且可用的Con。con';s的当前状态为关闭(C#,SQL),c#,sql,.net,sql-server,codesmith,C#,Sql,.net,Sql Server,Codesmith,我使用Codesmith进行数据库连接,它时不时抛出下面的异常。这个班也有单身汉 我假设codesmith会自动打开和关闭与数据库的连接 *中的错误。Ex:System.InvalidOperationException:ExecuteReader 需要开放且可用的连接。连接的电流 该州已关闭。在 System.Data.SqlClient.SqlCommand.ValidateCommand(字符串方法, 布尔异步)at System.Data.SqlClient.SqlCommand.Run
//
///返回分隔符分析器
///
///
公共字典getDelimiteRofAnalyzer()
{
字典分隔符=新字典();
尝试
{
foreach(dataContext.DataSource.Where(a=>a.TypeId==1.ToList()中的var分隔符)
{
if(!delimiters.ContainsKey(delimiter.Name))
{
delimiters.Add(delimiter.Name、delimiter.delimiter.Value);
}
}
}
捕获(例外情况除外)
{
logger.Error(“getAnalyzer.Ex中的错误:“+Ex”);
}
返回分隔符;
}
公共静态DBManager GetInstance()
{
尝试
{
if(dbMgr==null)
{
dbMgr=新的DBManager();
}
dataContext=新的dataContext();
}
捕获(例外情况除外)
{
记录器错误(ex);
}
返回dbMgr;
}
错误非常具体。看来你的假设是错误的。有没有密码匠可以避免这种情况?
/// <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;
}