Migrating from CSLA 3.5 to 3.8.3 exception

Migrating from CSLA 3.5 to 3.8.3 exception

Old forum URL: forums.lhotka.net/forums/t/10205.aspx


leocharrua posted on Friday, March 25, 2011

I have migrated from CSLA 3.5 to 3.8.3 and have encountered problems.CommonRules.IntegerMinValue throws an exception with properties of type Int16. With version 3.5 does not happen. 

El código de usuario no controló Csla.Server.DataPortalException

  Message="DataPortal.Fetch falló en el servidor"

  Source="Csla"

  StackTrace:

       en Csla.Validation.ValidationRules.CheckRules(List`1 list) en d:\Documentos\_desarrollo\csla-3.8.3\cslacs\Csla\Validation\ValidationRules.cs:línea 1187

       en Csla.Validation.ValidationRules.CheckRules() en d:\Documentos\_desarrollo\csla-3.8.3\cslacs\Csla\Validation\ValidationRules.cs:línea 1128

       en SGINMO.Library.InquilinoContrato.GetInquilinoContrato(SafeDataReader dr) en d:\Documentos\_desarrollo\SGINMO\SGINMO.Library\InquilinoContrato.Designer.vb:línea 244

       en SGINMO.Library.ListaHijaInquilinosContrato.Fetch(SafeDataReader dr) en d:\Documentos\_desarrollo\SGINMO\SGINMO.Library\ListaHijaInquilinosContrato.Designer.vb:línea 175

       en SGINMO.Library.ListaHijaInquilinosContrato.GetListaHijaInquilinosContrato(SafeDataReader dr) en d:\Documentos\_desarrollo\SGINMO\SGINMO.Library\ListaHijaInquilinosContrato.Designer.vb:línea 59

       en SGINMO.Library.Contrato.FetchChildren(SafeDataReader dr) en d:\Documentos\_desarrollo\SGINMO\SGINMO.Library\Contrato.Designer.vb:línea 902

       en SGINMO.Library.Contrato.Fetch(SqlCommand cmd) en d:\Documentos\_desarrollo\SGINMO\SGINMO.Library\Contrato.Designer.vb:línea 856

       en SGINMO.Library.Contrato.DataPortal_Fetch(Criteria crit) en d:\Documentos\_desarrollo\SGINMO\SGINMO.Library\Contrato.Designer.vb:línea 827

       en dm(Object , Object[] )

       en Csla.Reflection.MethodCaller.CallMethod(Object obj, DynamicMethodHandle methodHandle, Object[] parameters) en d:\Documentos\_desarrollo\csla-3.8.3\cslacs\Csla\Reflection\MethodCaller.cs:línea 357

       en Csla.Reflection.MethodCaller.CallMethod(Object obj, DynamicMethodHandle methodHandle, Object[] parameters) en d:\Documentos\_desarrollo\csla-3.8.3\cslacs\Csla\Reflection\MethodCaller.cs:línea 361

       en Csla.Reflection.MethodCaller.CallMethod(Object obj, String method, Object[] parameters) en d:\Documentos\_desarrollo\csla-3.8.3\cslacs\Csla\Reflection\MethodCaller.cs:línea 270

       en Csla.Reflection.LateBoundObject.CallMethod(String method, Object[] parameters) en d:\Documentos\_desarrollo\csla-3.8.3\cslacs\Csla\Reflection\LateBoundObject.cs:línea 86

       en Csla.Server.SimpleDataPortal.Fetch(Type objectType, Object criteria, DataPortalContext context) en d:\Documentos\_desarrollo\csla-3.8.3\cslacs\Csla\Server\SimpleDataPortal.cs:línea 125

       en Csla.Server.SimpleDataPortal.Fetch(Type objectType, Object criteria, DataPortalContext context) en d:\Documentos\_desarrollo\csla-3.8.3\cslacs\Csla\Server\SimpleDataPortal.cs:línea 154

       en Csla.Server.DataPortalSelector.Fetch(Type objectType, Object criteria, DataPortalContext context) en d:\Documentos\_desarrollo\csla-3.8.3\cslacs\Csla\Server\DataPortalSelector.cs:línea 80

       en Csla.Server.DataPortal.Fetch(Type objectType, Object criteria, DataPortalContext context) en d:\Documentos\_desarrollo\csla-3.8.3\cslacs\Csla\Server\DataPortal.cs:línea 194

       en Csla.Server.Hosts.RemotingPortal.Fetch(Type objectType, Object criteria, DataPortalContext context) en d:\Documentos\_desarrollo\csla-3.8.3\cslacs\Csla\Server\Hosts\RemotingPortal.cs:línea 37

       en System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs)

       en System.Runtime.Remoting.Messaging.StackBuilderSink.PrivateProcessMessage(RuntimeMethodHandle md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs)

       en System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg, Int32 methodPtr, Boolean fExecuteInContext)

  InnerException: Csla.Reflection.CallMethodException

       Message="DataPortal_Fetch la llamada al método falló"

       Source="Csla"

       StackTrace:

            en Csla.Validation.ValidationRules.CheckRules(List`1 list) en d:\Documentos\_desarrollo\csla-3.8.3\cslacs\Csla\Validation\ValidationRules.cs:línea 1187

            en Csla.Validation.ValidationRules.CheckRules() en d:\Documentos\_desarrollo\csla-3.8.3\cslacs\Csla\Validation\ValidationRules.cs:línea 1128

            en SGINMO.Library.InquilinoContrato.GetInquilinoContrato(SafeDataReader dr) en d:\Documentos\_desarrollo\SGINMO\SGINMO.Library\InquilinoContrato.Designer.vb:línea 244

            en SGINMO.Library.ListaHijaInquilinosContrato.Fetch(SafeDataReader dr) en d:\Documentos\_desarrollo\SGINMO\SGINMO.Library\ListaHijaInquilinosContrato.Designer.vb:línea 175

            en SGINMO.Library.ListaHijaInquilinosContrato.GetListaHijaInquilinosContrato(SafeDataReader dr) en d:\Documentos\_desarrollo\SGINMO\SGINMO.Library\ListaHijaInquilinosContrato.Designer.vb:línea 59

            en SGINMO.Library.Contrato.FetchChildren(SafeDataReader dr) en d:\Documentos\_desarrollo\SGINMO\SGINMO.Library\Contrato.Designer.vb:línea 902

            en SGINMO.Library.Contrato.Fetch(SqlCommand cmd) en d:\Documentos\_desarrollo\SGINMO\SGINMO.Library\Contrato.Designer.vb:línea 856

            en SGINMO.Library.Contrato.DataPortal_Fetch(Criteria crit) en d:\Documentos\_desarrollo\SGINMO\SGINMO.Library\Contrato.Designer.vb:línea 827

            en dm(Object , Object[] )

            en Csla.Reflection.MethodCaller.CallMethod(Object obj, DynamicMethodHandle methodHandle, Object[] parameters) en d:\Documentos\_desarrollo\csla-3.8.3\cslacs\Csla\Reflection\MethodCaller.cs:línea 357

            en Csla.Reflection.MethodCaller.CallMethod(Object obj, DynamicMethodHandle methodHandle, Object[] parameters) en d:\Documentos\_desarrollo\csla-3.8.3\cslacs\Csla\Reflection\MethodCaller.cs:línea 361

            en Csla.Reflection.MethodCaller.CallMethod(Object obj, String method, Object[] parameters) en d:\Documentos\_desarrollo\csla-3.8.3\cslacs\Csla\Reflection\MethodCaller.cs:línea 270

            en Csla.Reflection.LateBoundObject.CallMethod(String method, Object[] parameters) en d:\Documentos\_desarrollo\csla-3.8.3\cslacs\Csla\Reflection\LateBoundObject.cs:línea 86

            en Csla.Server.SimpleDataPortal.Fetch(Type objectType, Object criteria, DataPortalContext context) en d:\Documentos\_desarrollo\csla-3.8.3\cslacs\Csla\Server\SimpleDataPortal.cs:línea 125

       InnerException: Csla.Validation.ValidationException

            Message="La regla de validación rule://Csla.Validation.CommonRules/IntegerMinValue/Orden?MinValue=0&Format= falló en la propiedad Orden"

            Source="Csla"

            StackTrace:

                 en Csla.Validation.ValidationRules.CheckRules(List`1 list) en d:\Documentos\_desarrollo\csla-3.8.3\cslacs\Csla\Validation\ValidationRules.cs:línea 1187

                 en Csla.Validation.ValidationRules.CheckRules() en d:\Documentos\_desarrollo\csla-3.8.3\cslacs\Csla\Validation\ValidationRules.cs:línea 1128

                 en SGINMO.Library.InquilinoContrato.GetInquilinoContrato(SafeDataReader dr) en d:\Documentos\_desarrollo\SGINMO\SGINMO.Library\InquilinoContrato.Designer.vb:línea 244

                 en SGINMO.Library.ListaHijaInquilinosContrato.Fetch(SafeDataReader dr) en d:\Documentos\_desarrollo\SGINMO\SGINMO.Library\ListaHijaInquilinosContrato.Designer.vb:línea 175

                 en SGINMO.Library.ListaHijaInquilinosContrato.GetListaHijaInquilinosContrato(SafeDataReader dr) en d:\Documentos\_desarrollo\SGINMO\SGINMO.Library\ListaHijaInquilinosContrato.Designer.vb:línea 59

                 en SGINMO.Library.Contrato.FetchChildren(SafeDataReader dr) en d:\Documentos\_desarrollo\SGINMO\SGINMO.Library\Contrato.Designer.vb:línea 902

                 en SGINMO.Library.Contrato.Fetch(SqlCommand cmd) en d:\Documentos\_desarrollo\SGINMO\SGINMO.Library\Contrato.Designer.vb:línea 856

                 en SGINMO.Library.Contrato.DataPortal_Fetch(Criteria crit) en d:\Documentos\_desarrollo\SGINMO\SGINMO.Library\Contrato.Designer.vb:línea 827

                 en dm(Object , Object[] )

                 en Csla.Reflection.MethodCaller.CallMethod(Object obj, DynamicMethodHandle methodHandle, Object[] parameters) en d:\Documentos\_desarrollo\csla-3.8.3\cslacs\Csla\Reflection\MethodCaller.cs:línea 357

            InnerException: System.InvalidCastException

                 Message="La conversión especificada no es válida."

                 Source="Csla"

                 StackTrace:

                      en Csla.Validation.CommonRules.IntegerMinValue(Object target, RuleArgs e) en d:\Documentos\_desarrollo\csla-3.8.3\cslacs\Csla\Validation\CommonRules.cs:línea 479

                      en Csla.Validation.RuleMethod.Invoke(Object target) en d:\Documentos\_desarrollo\csla-3.8.3\cslacs\Csla\Validation\RuleMethod.cs:línea 103

                      en Csla.Validation.ValidationRules.CheckRules(List`1 list) en d:\Documentos\_desarrollo\csla-3.8.3\cslacs\Csla\Validation\ValidationRules.cs:línea 1177

                 InnerException: 

 

ajj3085 replied on Sunday, March 27, 2011

Can you put a breakpoint into the Csla rule?   The exception is an invalid cast, I'd like to know what's being cast.

leocharrua replied on Sunday, March 27, 2011

The exception is throw in function IntegerMinValue

in line:   int value = (int)Utilities.CallByName(target, e.PropertyName, CallType.Get);

casting int16 (type of the property) to int.

 

ajj3085 replied on Sunday, March 27, 2011

Hmm, I'd check to ensure e.PropertyName is correct.  Also, check what Utilities.CallByName returns.

Casting an int16 to an int32 should not result in an exception.

leocharrua replied on Monday, March 28, 2011

I found the explanation here:

http://weblogs.sqlteam.com/mladenp/archive/2006/12/04/41013.aspx

I think that should be considered a bug.


ajj3085 replied on Monday, March 28, 2011

Just use the MaxValue<T> rule, and specify short.

Copyright (c) Marimer LLC