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:
Can you put a breakpoint into the Csla rule? The exception is an invalid cast, I'd like to know what's being cast.
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.
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.
I found the explanation here:
http://weblogs.sqlteam.com/mladenp/archive/2006/12/04/41013.aspx
I think that should be considered a bug.
Just use the MaxValue<T> rule, and specify short.
Copyright (c) Marimer LLC