Tiene toda la pinta de ser un bug en NHV....
Acordate que para CUIT , NHV tiene algo especifico a Argentina para
validarlos.
En Argentina, con una operación matemática se puede saber si el cuit es
valido (el último dígito sirve para validar), si agregas una referencia a
NHibernate.Validator.Specific.dll vas a ver el attributo Cuit.



El 30 de abril de 2010 00:14, Rodrigo Juarez <[email protected]>escribió:

> Hola a todos!
>
> Estoy tratando de generar la base de datos en forma automatica en
> tests de mi aplicacion. Quiero aprovechar que ya estoy utilizando
> NHValidator para que utilice las constraints especificadas para cada
> clase.
>
> Me di cuenta, que en el caso de tener una clase como componente, no
> esta tomando las constraints en la generacion de la tabla resultante.
>
> La validacion de objetos que utilizan componentes funciona
> correctamente, es decir, si el componente tiene valores invalidos,
> NHValidator lo informa correctamente.
>
> ¿Debo tener en cuenta algun paso adicional para que la generacion de
> la base de datos tome las constraints de los componentes?
>
>
> Información adicional
> ------------------------------
>
> Estoy utilizando NHibernate, ConfORM, NHValidator y unhaddins, todas
> las versiones descargadas y compiladas al 16 de abril de 2010.
>
> Las constraints las especifico por medio de atributos.
>
> A continuacion, copio las clases involucradas, el archivo de
> configuracion de Nhv y los datos de la tabla generada para la clase
> Asegurado, que como puede verse no tiene establecido el ancho del
> campo calle en 100
>
> <?xml version="1.0" encoding="utf-8" ?>
> <!-- NHibernate.Validator Configuration -->
> <nhv-configuration xmlns='urn:nhv-configuration-1.0'>
>        <property name='apply_to_ddl'>true</property>
>        <property name='autoregister_listeners'>true</property>
> </nhv-configuration>
>
> using NHibernate.Validator.Constraints;
>
> namespace Modelo
> {
>        public class Asegurado:Entity
>        {
>                [Length(Min=1,Max=50,Message="La Razón Social debe tener
> entre 1 y
> 50 caracteres."),NotNullNotEmpty]
>                public virtual string RazonSocial { get; set; }
>
>                [Length(Min=11,Max=11,Message = "CUIT especificado no
> válido."),NotNullNotEmpty]
>                public virtual string Cuit { get; set; }
>
>                [Valid]
>                public virtual Direccion Direccion { get; set;}
>        }
> }
>
> using NHibernate.Validator.Constraints;
>
> namespace Modelo
> {
>        public class Direccion
>        {
>                [Length(Max=100,Message="La calle puede tener hasta 100
> caracteres.")]
>                public virtual string Calle { get; set; }
>                public virtual int Numero { get; set; }
>                public virtual Localidad Localidad{ get; set; }
>                [Length(Max = 10, Message = "El código postal puede tener
> hasta 10
> caracteres.")]
>                public virtual string Cp{ get; set; }
>        }
> }
>
> CREATE TABLE [dbo].[Asegurado](
>        [Id] [uniqueidentifier] NOT NULL,
>        [RazonSocial] [nvarchar](50) NOT NULL,
>        [Cuit] [nvarchar](11) NOT NULL,
>        [Calle] [nvarchar](255) NULL,
>        [Numero] [int] NULL,
>        [Localidad] [uniqueidentifier] NULL,
>        [Cp] [nvarchar](255) NULL,
>
> --
> Para escribir al Grupo, hágalo a esta dirección:
> [email protected]
> Para más, visite: http://groups.google.com/group/NHibernate-Hispano

-- 
Para escribir al Grupo, hágalo a esta dirección: 
[email protected]
Para más, visite: http://groups.google.com/group/NHibernate-Hispano

Responder a