Hi!
I've encountered problem with DB decimal (38,25) type.
Environment:
SQL server - MS SQL2005
.Net version - 2.0.50727
LLBLGenPro version - 2.5 Final (released on 2007-09-24)
As I think LLBLGen tries to convert decimal DB type to System.Decimal type automatically.
This works good on decimals with small scale.
But in my case (scale = 25, value = 22642.0000000002000000000000001) this fails to System.OverflowException (conversion overflow):
in System.Data.SqlClient.SqlBuffer.get_Decimal()
in System.Data.SqlClient.SqlBuffer.get_Value()
in System.Data.SqlClient.SqlDataReader.GetValueInternal(Int32 i)
in System.Data.SqlClient.SqlDataReader.GetValues(Object[] values)
in SD.LLBLGen.Pro.ORMSupportClasses.DaoBase.ExecuteMultiRowRetrievalQuery(IRetrievalQuery queryToExecute, ITransaction containingTransaction, IEntityCollection collectionToFill, Boolean allowDuplicates, IEntityFields fieldsUsedForQuery, IFieldPersistenceInfo[] fieldPersistenceInfos)
in SD.LLBLGen.Pro.ORMSupportClasses.DaoBase.PerformGetMultiAction(ITransaction containingTransaction, IEntityCollection collectionToFill, Int64 maxNumberOfItemsToReturn, ISortExpression sortClauses, IPredicate selectFilter, IRelationCollection relations, IPrefetchPath prefetchPathToUse, ExcludeIncludeFieldsList excludedIncludedFields, Int32 pageNumber, Int32 pageSize)
in SD.LLBLGen.Pro.ORMSupportClasses.DaoBase.GetMulti(ITransaction containingTransaction, IEntityCollection collectionToFill, Int64 maxNumberOfItemsToReturn, ISortExpression sortClauses, IEntityFactory entityFactoryToUse, IPredicate selectFilter, IRelationCollection relations, IPrefetchPath prefetchPathToUse, ExcludeIncludeFieldsList excludedIncludedFields, Int32 pageNumber, Int32 pageSize)
in SD.LLBLGen.Pro.ORMSupportClasses.EntityCollectionBase`1.GetMulti(IPredicate selectFilter, Int64 maxNumberOfItemsToReturn, ISortExpression sortClauses, IRelationCollection relations, IPrefetchPath prefetchPathToUse, ExcludeIncludeFieldsList excludedIncludedFields, Int32 pageNumber, Int32 pageSize)
in SD.LLBLGen.Pro.ORMSupportClasses.EntityCollectionBase`1.GetMulti(IPredicate selectFilter)
Revert operation (updating to DB) (with the same value) throws exception too:
in System.Data.SqlTypes.SqlDecimal.ToDecimal()
in System.Data.SqlTypes.SqlDecimal.get_Value()
in System.Data.SqlClient.TdsParser.AdjustDecimalScale(Decimal value, Int32 newScale)
in System.Data.SqlClient.TdsParser.TdsExecuteRPC(_SqlRPC[] rpcArray, Int32 timeout, Boolean inSchema, SqlNotificationRequest notificationRequest, TdsParserStateObject stateObj)
in System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
in System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
in System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)
in System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
in SD.LLBLGen.Pro.ORMSupportClasses.ActionQuery.Execute()
I found one forum thread (http://www.llblgen.com/tinyforum/Messages.aspx?ThreadID=1583&HighLight=1) that partially rorresponds to my situation but the thread discussion is not finished successfully.
As I understand "TypeConverter using" this feature applies after primary db-to-basic-net-type conversion and it's useless in my situation.
Thus 2 questions:
- Does LLBLGen allow to use System.Data.SqlTypes.SqlDecimal instead of System.Decimal as conversion target type?
- If does not - How I can solve the problem described?
Dmitry