【发布时间】:2014-04-12 13:49:38
【问题描述】:
有时当我访问我的 asp.net 网站时会看到此错误:
结果中不存在所需的列“代码”。
[InvalidOperationException:所需的列“代码”不存在 在结果中。]
System.Data.Linq.SqlClient.ObjectReaderBase1.GetColumnOrdinals(NamedColumn[] namedColumns) +7096701..ctor(ObjectReaderSession
System.Data.Linq.SqlClient.ObjectReaderBase1 session, NamedColumn[] namedColumns, Object[] globals, Object[] arguments, Int32 nLocals) +1931.CreateReader(Func
System.Data.Linq.SqlClient.ObjectReaderSession2 fnMaterialize, NamedColumn[] namedColumns, Object[] globals, Int32 nLocals, Boolean disposeDataReader) +1132.Create(DbDataReader dataReader, Boolean disposeDataReader, IReaderProvider 提供者, 对象[] 父参数,对象[] 用户参数,ICompiledSubQuery[] 子查询)+272
System.Data.Linq.SqlClient.ObjectReaderFactory
System.Data.Linq.SqlClient.SqlProvider.Execute(表达式查询, QueryInfo queryInfo, IObjectReaderFactory 工厂, Object[] parentArgs, Object[] userArgs, ICompiledSubQuery[] subQueries, Object 最后结果)+2596
System.Data.Linq.SqlClient.SqlProvider.ExecuteAll(表达式查询, QueryInfo[] queryInfos, IObjectReaderFactory 工厂, Object[] userArguments,ICompiledSubQuery[] 子查询)+188
System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(表达式 查询)+500 DAL.DataClassesDataContext.SP_Select_Agents(Nullable1 code, Nullable1 just_act)+182 BLL_Agency.LoadAgency(Int32 代码, Int32 活动)+62 BLL_Agency.LoadAgencyTable(Int32 代码)+244
UserControl_Security_Login.Page_Load(Object sender, EventArgs e) +221
我认为此错误来自一个存储过程,该过程肯定具有此列并在 SQL Server Management Studio 中正确运行。
当我重启iis或者替换app_global.asax问题就解决了!
几天/小时后问题会再次出现。
【问题讨论】:
-
我们需要查看 SQL 和调用 Linq。否则没有我们可以提供帮助的方法
-
99% 在一段时间后发生的 LINQ-to-SQL 异常与访问一个上下文实例的多个线程有关。如果您使用一个全局/单例上下文,则必须将其重构为每个请求的上下文。
-
@Hogan 在服务器端调用 sp 是这样的:
code return System.Data.Linq.ISingleResult<DAL.sp_Select_AgencyUser_ByIDResult> LoadAgencyUserByID()'和 dc 是在类构造函数中创建的 DataClassesDataContext。 -
@GertArnold 在这个旧网站上永远不会在任何地方使用线程
-
所以每个用户都等到前一个完成? Web 应用程序中始终存在线程。那么
DbContext呢?
标签: c# iis linq-to-sql