- Home
- LLBLGen Pro
- LLBLGen Pro Runtime Framework
Type Converter Issue Int16ToInt32
Joined: 31-Oct-2011
Hi,
I am using LLBLGrn Pro 3.1, SQL 2008 and Oracle 11i
Oracle Id - Number(1,0) - .Net Type - Int16 SQL Int - .Net Type Int32
I am using Type Converter Int16ToInt32, which is mapped to oracle in llblgen designer.Type converter is defined as follows...
using System; using System.ComponentModel;
namespace SD.LLBLGen.Pro.TypeConverters { [Description("Converter with as core type System.Int16, for mapping a field with a .NET type System.Int16 onto a System.Int32 database field")] public class Int16ToInt32TypeConverter : TypeConverter { public Int16ToInt32TypeConverter() { }
public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
{
// any integer type is accepted. No fractional types like float/double.
switch (sourceType.FullName)
{
case "System.Int16":
return true;
default:
return false;
}
}
public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
{
// any integer type is accepted. No fractional types like float/double.
switch (destinationType.FullName)
{
case "System.Int32":
return true;
default:
return false;
}
}
public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value)
{
Int32 toReturn;
switch (value.GetType().FullName)
{
case "System.Int16":
toReturn = Convert.ToInt32(value);
break;
default:
//return value;
throw new NotSupportedException("Conversion from a value of type '" + value.GetType().ToString() + "' to System.Int32 isn't supported");
}
return toReturn;
}
public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType)
{
if (value == null)
{
//throw new ArgumentNullException("value", "Value can't be null");
return Int32.MinValue;
}
if (!(value is Int32))
{
//throw new ArgumentException("Value isn't of type Int32", "value");
return value;
}
return Convert.ToInt16(value);
}
public override object CreateInstance(ITypeDescriptorContext context, System.Collections.IDictionary propertyValues)
{
return Int32.MinValue;
}
} }
Error:
At Line 40 : switch (value.GetType().FullName)
System Error:
DomainId: -1, User: , UserId: -1, EmployeeId: -1, , Product Version: 1.2.3.700
ErrorDescription: The following exception occured at System.Object ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object): Object reference not set to an instance of an object.
The following exception occured at Grb.Framework.Business.Lower.EntityClasses.LoginEntity GetLoginEntity(System.String): DomainManager_GetLoginEntity for login: ajbily@grbinc.com.
The following exception occured: Login1_Authenticate
Stack Trace:
at SD.LLBLGen.Pro.TypeConverters.Int16ToInt32TypeConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value) in C:\Work\RBS\AssistWeb\Framework\Business.Lower\TypeConverter\Int16ToInt32TypeConverter\Int16ToInt32TypeConverter.cs:line 40
at SD.LLBLGen.Pro.ORMSupportClasses.FieldUtilities.DetermineValueToSet(IEntityFieldCore fieldToSet, IFieldPersistenceInfo persistenceInfo, Object currentValue, Boolean& isConverted) in c:\Myprojects\VS.NET Projects\LLBLGen Pro v3.1\Frameworks\LLBLGen Pro\RuntimeLibraries\ORMSupportClasses\Miscellaneous\FieldUtilities.cs:line 124
at SD.LLBLGen.Pro.ORMSupportClasses.DataAccessAdapterBase.ReadRowIntoFields(Object[] values, IEntityFields2 rowDestination, List1 fieldIndexToOrdinal, IFieldPersistenceInfo[] fieldsPersistenceInfo) in c:\Myprojects\VS.NET Projects\LLBLGen Pro v3.1\Frameworks\LLBLGen Pro\RuntimeLibraries\ORMSupportClasses\AdapterSpecific\DataAccessAdapterBase.cs:line 5050
at SD.LLBLGen.Pro.ORMSupportClasses.DataAccessAdapterBase.CreateEntityInstanceFromReaderRow(IEntityFactory2 entityFactory, IFieldPersistenceInfo[] fieldsPersistenceInfo, Int32 numberOfFieldsInQuery, InheritanceHierarchyType typeOfHierarchy, Dictionary
2 hierarchyFieldAliasesToOrdinals, List1 fieldIndexToOrdinal, Dictionary
2 entityFieldStartIndexesPerEntity, Boolean hasExcludedFields, IFieldPersistenceInfo[] persistenceInfosForRowReader, Object[] valuesOfRow, IEntityFactory2& entityFactoryToUse) in c:\Myprojects\VS.NET Projects\LLBLGen Pro v3.1\Frameworks\LLBLGen Pro\RuntimeLibraries\ORMSupportClasses\AdapterSpecific\DataAccessAdapterBase.cs:line 5717
at SD.LLBLGen.Pro.ORMSupportClasses.DataAccessAdapterBase.ExecuteMultiRowRetrievalQuery(IRetrievalQuery queryToExecute, IEntityFactory2 entityFactory, IEntityCollection2 collectionToFill, IFieldPersistenceInfo[] fieldsPersistenceInfo, Boolean allowDuplicates, IEntityFields2 fieldsUsedForQuery) in c:\Myprojects\VS.NET Projects\LLBLGen Pro v3.1\Frameworks\LLBLGen Pro\RuntimeLibraries\ORMSupportClasses\AdapterSpecific\DataAccessAdapterBase.cs:line 651
at SD.LLBLGen.Pro.ORMSupportClasses.DataAccessAdapterBase.FetchEntityCollectionInternal(IEntityCollection2 collectionToFill, IRelationPredicateBucket& filterBucket, Int32 maxNumberOfItemsToReturn, ISortExpression sortClauses, ExcludeIncludeFieldsList excludedIncludedFields, Int32 pageNumber, Int32 pageSize) in c:\Myprojects\VS.NET Projects\LLBLGen Pro v3.1\Frameworks\LLBLGen Pro\RuntimeLibraries\ORMSupportClasses\AdapterSpecific\DataAccessAdapterBase.cs:line 4577
at SD.LLBLGen.Pro.ORMSupportClasses.DataAccessAdapterBase.FetchPrefetchPath(IEntityCollection2 rootEntities, IRelationPredicateBucket filterBucket, Int64 maxNumberOfItemsToReturn, ISortExpression sortClauses, IPrefetchPath2 prefetchPath, Boolean forceParameterizedPPath) in c:\Myprojects\VS.NET Projects\LLBLGen Pro v3.1\Frameworks\LLBLGen Pro\RuntimeLibraries\ORMSupportClasses\AdapterSpecific\DataAccessAdapterBase.cs:line 5216
at SD.LLBLGen.Pro.ORMSupportClasses.DataAccessAdapterBase.FetchPrefetchPath(IEntityCollection2 rootEntities, IRelationPredicateBucket filterBucket, Int64 maxNumberOfItemsToReturn, ISortExpression sortClauses, IPrefetchPath2 prefetchPath) in c:\Myprojects\VS.NET Projects\LLBLGen Pro v3.1\Frameworks\LLBLGen Pro\RuntimeLibraries\ORMSupportClasses\AdapterSpecific\DataAccessAdapterBase.cs:line 5089
at SD.LLBLGen.Pro.ORMSupportClasses.DataAccessAdapterBase.FetchAdditionalPrefetchPath(IPrefetchPath2 prefetchPath, Context contextToUse, IEntity2 fetchedEntity, IRelationPredicateBucket filterToUse) in c:\Myprojects\VS.NET Projects\LLBLGen Pro v3.1\Frameworks\LLBLGen Pro\RuntimeLibraries\ORMSupportClasses\AdapterSpecific\DataAccessAdapterBase.cs:line 5823
at SD.LLBLGen.Pro.ORMSupportClasses.DataAccessAdapterBase.FetchEntityUsingFilter(IEntity2 entityToFetch, IPrefetchPath2 prefetchPath, Context contextToUse, IRelationPredicateBucket filter, ExcludeIncludeFieldsList excludedIncludedFields) in c:\Myprojects\VS.NET Projects\LLBLGen Pro v3.1\Frameworks\LLBLGen Pro\RuntimeLibraries\ORMSupportClasses\AdapterSpecific\DataAccessAdapterBase.cs:line 4849
at SD.LLBLGen.Pro.ORMSupportClasses.DataAccessAdapterBase.FetchEntityUsingUniqueConstraint(IEntity2 entityToFetch, IPredicateExpression uniqueConstraintFilter, IPrefetchPath2 prefetchPath, Context contextToUse, ExcludeIncludeFieldsList excludedIncludedFields) in c:\Myprojects\VS.NET Projects\LLBLGen Pro v3.1\Frameworks\LLBLGen Pro\RuntimeLibraries\ORMSupportClasses\AdapterSpecific\DataAccessAdapterBase.cs:line 1917
at SD.LLBLGen.Pro.ORMSupportClasses.DataAccessAdapterBase.FetchEntityUsingUniqueConstraint(IEntity2 entityToFetch, IPredicateExpression uniqueConstraintFilter, IPrefetchPath2 prefetchPath) in c:\Myprojects\VS.NET Projects\LLBLGen Pro v3.1\Frameworks\LLBLGen Pro\RuntimeLibraries\ORMSupportClasses\AdapterSpecific\DataAccessAdapterBase.cs:line 1876
at Grb.Framework.Business.DomainManager.GetLoginEntity(String loginName) in c:\Work\RBS\AssistWeb\Framework\Business\DomainManager.vb:line 90 at Grb.Framework.Business.DomainManager.GetLoginEntity(String loginName) in c:\Work\RBS\AssistWeb\Framework\Business\DomainManager.vb:line 99
at Grb.PresentationAssist.Login.Login1_Authenticate(Object sender, AuthenticateEventArgs e) in C:\Work\RBS\AssistWeb\Presentation\Assist\Login.aspx.vb:line 191
Any idea ?
Thanks for your time...
It could be the value it's trying to convert is actually NULL. Is that field nullable? Maybe you have to add logic in case the value is null.
if (value == null)
{
return null;
}
Maybe if you debug very close to the TypeConverter you can determine the real problem.