linq to sql错误:所需的列不存在

时间:2014-04-12 13:49:39

标签: c# iis linq-to-sql

有时当我访问我的asp.net网站时会看到此错误:

  

结果中不存在所需的列“代码”。

     

[InvalidOperationException:所需的列'code'不存在   在结果中。]
  System.Data.Linq.SqlClient.ObjectReaderBase 1.GetColumnOrdinals(NamedColumn[] namedColumns) +709670
System.Data.Linq.SqlClient.ObjectReaderBase
1..ctor(ObjectReaderSession 1 session, NamedColumn[] namedColumns, Object[] globals, Object[] arguments, Int32 nLocals) +193
System.Data.Linq.SqlClient.ObjectReaderSession
1.CreateReader(Func键2 fnMaterialize, NamedColumn[] namedColumns, Object[] globals, Int32 nLocals, Boolean disposeDataReader) +113
System.Data.Linq.SqlClient.ObjectReaderFactory
2.创建(DbDataReader   dataReader,Boolean disposeDataReader,IReaderProvider提供程序,   Object [] parentArgs,Object [] userArgs,ICompiledSubQuery []   subQueries)+272
  System.Data.Linq.SqlClient.SqlProvider.Execute(表达式查询,   QueryInfo queryInfo,IObjectReaderFactory factory,Object []   parentArgs,Object [] userArgs,ICompiledSubQuery [] subQueries,Object   lastResult)+2596
  System.Data.Linq.SqlClient.SqlProvider.ExecuteAll(表达式查询,   QueryInfo [] queryInfos,IObjectReaderFactory factory,Object []   userArguments,ICompiledSubQuery [] subQueries)+188
  System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(表达式   查询)+500 DAL.DataClassesDataContext.SP_Select_Agents(Nullable 1 code, Nullable 1 just_act)+182 BLL_Agency.LoadAgency(Int32 code,   Int32 actives)+62 BLL_Agency.LoadAgencyTable(Int32 code)+244
  UserControl_Security_Login.Page_Load(Object sender,EventArgs e)+221

我认为这个错误来自一个存储过程,该存储过程当然具有此列并在SQL Server Management Studio中正确运行。

当我重新启动iis或替换app_global.asax时,问题将解决!

几天/小时之后会再次出现问题。

1 个答案:

答案 0 :(得分:0)

实际上有一种情况我们不需要看代码。您可能会因为从未关闭数据库连接而导致问题。如果您从未关闭数据库连接,则意味着您永远不会打开数据库连接。有时数据库设置和网络设置会在连接长时间打开时关闭/超时连接。

要解决此类问题,请在所有数据库代码周围使用标准using()块。然后你将打开一个连接使用它并一致地再次关闭它。 .NET的连接池和缓存确保这种类型的使用不会导致性能损失。