Error when running Ent Lib 5 Data Access Block in SIngleton object
description
Dear all,
i hav data access code in a singleton object, and Initialize Accessors once and reuse many times. however after few days running in windows service, the code will throw error :
Object reference not set to an instance of an object. at System.Data.SqlClient.SqlDataReader.Bind(TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
at System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior)
at Microsoft.Practices.EnterpriseLibrary.Data.Database.DoExecuteReader(DbCommand command, CommandBehavior cmdBehavior) in e:\Builds\EntLib\Latest\Source\Blocks\Data\Src\Data\Database.cs:line 460
at Microsoft.Practices.EnterpriseLibrary.Data.Database.ExecuteReader(DbCommand command) in e:\Builds\EntLib\Latest\Source\Blocks\Data\Src\Data\Database.cs:line 846
at Microsoft.Practices.EnterpriseLibrary.Data.CommandAccessor`1.<Execute>d__0.MoveNext() in e:\Builds\EntLib\Latest\Source\Blocks\Data\Src\Data\CommandAccessor.cs:line 68
at MailDelivery.Service.MailManager.GetAllMail() in C:\Source Code\MailDelivery\MailManager.cs:line 338
that piece of code is an important entry point code and being used a lot, the error only happen occasionally.
any thoughts ?
and once the first error is hit, each and every other Data Access code written in Ent Lib which uses Accessors and column mapping will fail with the column not found error.
error :
Message: System.InvalidOperationException: The column prov_name was not found on the IDataRecord being evaluated. This might indicate that the accessor was created with the wrong mappings. ---> System.IndexOutOfRangeException: prov_name
at System.Data.ProviderBase.FieldNameLookup.GetOrdinal(String fieldName)
at System.Data.SqlClient.SqlDataReader.GetOrdinal(String name)
at System.Data.SqlClient.SqlDataReader.get_Item(String name)
at Microsoft.Practices.EnterpriseLibrary.Data.DataReaderWrapper.System.Data.IDataRecord.get_Item(String name) in e:\Builds\EntLib\Latest\Source\Blocks\Data\Src\Data\DataReaderWrapper.cs:line 466
at Microsoft.Practices.EnterpriseLibrary.Data.ColumnNameMapping.GetPropertyValue(IDataRecord row) in e:\Builds\EntLib\Latest\Source\Blocks\Data\Src\Data\ReflectionRowMapper.cs:line 227
--- End of inner exception stack trace ---
at Microsoft.Practices.EnterpriseLibrary.Data.ColumnNameMapping.GetPropertyValue(IDataRecord row) in e:\Builds\EntLib\Latest\Source\Blocks\Data\Src\Data\ReflectionRowMapper.cs:line 236
at lambda_method(Closure , IDataRecord )
at Microsoft.Practices.EnterpriseLibrary.Data.ReflectionRowMapper`1.MapRow(IDataRecord row) in e:\Builds\EntLib\Latest\Source\Blocks\Data\Src\Data\ReflectionRowMapper.cs:line 86
at Microsoft.Practices.EnterpriseLibrary.Data.CommandAccessor`1.DefaultResultSetMapper.<MapSet>d__7.MoveNext() in e:\Builds\EntLib\Latest\Source\Blocks\Data\Src\Data\CommandAccessor.cs:line 136
at Microsoft.Practices.EnterpriseLibrary.Data.CommandAccessor`1.<Execute>d__0.MoveNext() in e:\Builds\EntLib\Latest\Source\Blocks\Data\Src\Data\CommandAccessor.cs:line 70
at MailDelivery.Service.MailManager.GetAllMail() in C:\Source Code\MailDelivery\MailManager.cs:line 334