Error in ORM Support Class

Posts   
 
    
Rishi
User
Posts: 69
Joined: 31-Oct-2011
# Posted on: 16-Dec-2011 21:29:01   

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(List1 valueProjectors, IGeneralDataProjector projector, IDataReader datasource, Int32 maxNumberOfItemsToReturn, Int32 pageNumber, Int32 pageSize, Boolean clientSideLimitation, Boolean clientSideDistinctFiltering, Boolean clientSidePaging, UniqueList1 stringCache, Dictionary2 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?

daelmo avatar
daelmo
Support Team
Posts: 8245
Joined: 28-Nov-2005
# Posted on: 17-Dec-2011 01:54:10   

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)))
David Elizondo | LLBLGen Support Team