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