- Home
- LLBLGen Pro
- LLBLGen Pro Runtime Framework
Error in ORM Support Class
Joined: 31-Oct-2011
Hi,
I am using llblgen Pro 3.1, SQl 2008 & Oracle 9i.
I am trying to access store procedure in oracle database, I have different no of parameters in oracle and sql so i am using my own implementation to get data from database. I have no problem accessing data from database, but when i am trying to fetch projection at that time i am getting "ORMValue TypeMismatch" Exception.
Error: The value 3 is of type 'System.Int64' while the field is of type 'System.Int32'
Stack Trace:
at SD.LLBLGen.Pro.ORMSupportClasses.EntityBase2.ValidateValue(IFieldInfo fieldToValidate, Object& value, Int32 fieldIndex) in c:\Myprojects\VS.NET Projects\LLBLGen Pro v3.1\Frameworks\LLBLGen Pro\RuntimeLibraries\ORMSupportClasses\AdapterSpecific\EntityBase2.cs:line 3759
at SD.LLBLGen.Pro.ORMSupportClasses.EntityBase2.SetValue(Int32 fieldIndex, Object value, Boolean performDesyncForFKFields) in c:\Myprojects\VS.NET Projects\LLBLGen Pro v3.1\Frameworks\LLBLGen Pro\RuntimeLibraries\ORMSupportClasses\AdapterSpecific\EntityBase2.cs:line 2622
at SD.LLBLGen.Pro.ORMSupportClasses.EntityBase2.SetValue(Int32 fieldIndex, Object value) in c:\Myprojects\VS.NET Projects\LLBLGen Pro v3.1\Frameworks\LLBLGen Pro\RuntimeLibraries\ORMSupportClasses\AdapterSpecific\EntityBase2.cs:line 2571
at SD.LLBLGen.Pro.ORMSupportClasses.EntityBase2.SetNewFieldValue(Int32 fieldIndex, Object value) in c:\Myprojects\VS.NET Projects\LLBLGen Pro v3.1\Frameworks\LLBLGen Pro\RuntimeLibraries\ORMSupportClasses\AdapterSpecific\EntityBase2.cs:line 1634
at SD.LLBLGen.Pro.ORMSupportClasses.DataProjectorToIEntityCollection2.AddProjectionResultToContainer(IList projectors, Object[] rawProjectionResult) in c:\Myprojects\VS.NET Projects\LLBLGen Pro v3.1\Frameworks\LLBLGen Pro\RuntimeLibraries\ORMSupportClasses\Projection\DataProjectorToEntityCollection.cs:line 267
at SD.LLBLGen.Pro.ORMSupportClasses.DataProjectorToIEntityCollection2.SD.LLBLGen.Pro.ORMSupportClasses.IGeneralDataProjector.AddProjectionResultToContainer(List1 valueProjectors, Object[] rawProjectionResult) in c:\Myprojects\VS.NET Projects\LLBLGen Pro v3.1\Frameworks\LLBLGen Pro\RuntimeLibraries\ORMSupportClasses\Projection\DataProjectorToEntityCollection.cs:line 223
at SD.LLBLGen.Pro.ORMSupportClasses.ProjectionUtils.FetchProjectionFromReader(List
1 valueProjectors, IGeneralDataProjector projector, IDataReader datasource, Int32 maxNumberOfItemsToReturn, Int32 pageNumber, Int32 pageSize, Boolean clientSideLimitation, Boolean clientSideDistinctFiltering, Boolean clientSidePaging, UniqueList1 stringCache, Dictionary
2 typeConvertersToRun) in c:\Myprojects\VS.NET Projects\LLBLGen Pro v3.1\Frameworks\LLBLGen Pro\RuntimeLibraries\ORMSupportClasses\Projection\ProjectionUtils.cs:line 202
at SD.LLBLGen.Pro.ORMSupportClasses.DataAccessAdapterBase.FetchProjection(List`1 valueProjectors, IGeneralDataProjector projector, IDataReader reader) in c:\Myprojects\VS.NET Projects\LLBLGen Pro v3.1\Frameworks\LLBLGen Pro\RuntimeLibraries\ORMSupportClasses\AdapterSpecific\DataAccessAdapterBase.cs:line 1735
at Grb.PlugIn.Assist.Business.BusinessManager.GetEmployeeEntityCollection(Int64 domainId, String search) in c:\Work\RBS\AssistWeb\PlugIn\Assist\Business\BusinessManager.vb:line 5047
Vb Code:
Using query1 As SD.LLBLGen.Pro.ORMSupportClasses.IRetrievalQuery = query
Using adapter As SD.LLBLGen.Pro.ORMSupportClasses.IDataAccessAdapter = Grb.Framework.Business.Lower.FactoryAdapter.GetDataAccessAdapter(m_DataManager.ConnectionString, m_DataManager.ProviderType)
Using reader As System.Data.IDataReader = adapter.FetchDataReader(query, CommandBehavior.CloseConnection)
reader.NextResult() ' to get employee data
Dim valueProjectors As New System.Collections.Generic.List(Of SD.LLBLGen.Pro.ORMSupportClasses.IDataValueProjector)()
valueProjectors.Add(New SD.LLBLGen.Pro.ORMSupportClasses.DataValueProjector(Grb.Framework.Business.Lower.EmpGeneralFieldIndex.DomainId.ToString(), 0, GetType(String)))
valueProjectors.Add(New SD.LLBLGen.Pro.ORMSupportClasses.DataValueProjector(Grb.Framework.Business.Lower.EmpGeneralFieldIndex.Id.ToString(), 1, GetType(String)))
valueProjectors.Add(New SD.LLBLGen.Pro.ORMSupportClasses.DataValueProjector(Grb.Framework.Business.Lower.EmpGeneralFieldIndex.Ssn.ToString(), 2, GetType(String)))
valueProjectors.Add(New SD.LLBLGen.Pro.ORMSupportClasses.DataValueProjector(Grb.Framework.Business.Lower.EmpGeneralFieldIndex.LastName.ToString(), 3, GetType(String)))
valueProjectors.Add(New SD.LLBLGen.Pro.ORMSupportClasses.DataValueProjector(Grb.Framework.Business.Lower.EmpGeneralFieldIndex.FirstName.ToString(), 4, GetType(String)))
valueProjectors.Add(New SD.LLBLGen.Pro.ORMSupportClasses.DataValueProjector(Grb.Framework.Business.Lower.EmpGeneralFieldIndex.MiddleInitial.ToString(), 5, GetType(String)))
valueProjectors.Add(New SD.LLBLGen.Pro.ORMSupportClasses.DataValueProjector(Grb.Framework.Business.Lower.EmpGeneralFieldIndex.CustomId.ToString(), 6, GetType(String)))
valueProjectors.Add(New SD.LLBLGen.Pro.ORMSupportClasses.DataValueProjector(Grb.Framework.Business.Lower.EmpGeneralFieldIndex.DateOfBirth.ToString, 7, GetType(DataSetDateTime)))
valueProjectors.Add(New SD.LLBLGen.Pro.ORMSupportClasses.DataValueProjector(Grb.Framework.Business.Lower.EmpGeneralFieldIndex.CurrentAppointmentDate.ToString, 8, GetType(DataSetDateTime)))
valueProjectors.Add(New SD.LLBLGen.Pro.ORMSupportClasses.DataValueProjector(Grb.Framework.Business.Lower.EmpGeneralFieldIndex.PayRate.ToString(), 9, GetType(String)))
valueProjectors.Add(New SD.LLBLGen.Pro.ORMSupportClasses.DataValueProjector(Grb.Framework.Business.Lower.EmpGeneralFieldIndex.FegliCode.ToString(), 10, GetType(String)))
valueProjectors.Add(New SD.LLBLGen.Pro.ORMSupportClasses.DataValueProjector(Grb.Framework.Business.Lower.EmpGeneralFieldIndex.FehbCode.ToString(), 11, GetType(String)))
valueProjectors.Add(New SD.LLBLGen.Pro.ORMSupportClasses.DataValueProjector(Grb.Framework.Business.Lower.EmpGeneralFieldIndex.ProfileLastUpdatedTimestamp.ToString, 12, GetType(DataSetDateTime)))
Dim projector As New SD.LLBLGen.Pro.ORMSupportClasses.DataProjectorToIEntityCollection2(empGeneralEntityCollection)
adapter.FetchProjection(valueProjectors, projector, reader)
End Using
End Using
End Using
Error at this Line : adapter.FetchProjection(valueProjectors, projector, reader)
I believe value 3 is DomainId and defined Number(10,0) which is of type Int64. How you implement type conversion here...
Any Idea?
Stored Procedures also have mappings and you can also add TypeConverters to the parameters. But I wonder, if DomainId is Int64 why are you using GetType(String) in that dataProjector value? valueProjectors.Add(New
SD.LLBLGen.Pro.ORMSupportClasses.DataValueProjector(Grb.Framework.Business.Lower.EmpGeneralFieldIndex.DomainId.ToString(), 0, GetType(String)))