viernes, 15 de octubre de 2010

Insertar nulos NHibernate

Cuando intentamos persistir un valor de tipo null mediante el ORM de NHibernate para una propiedad DateTime normalmente nos encontramos con que el API no puede guardar dicho valor. A modo de ejemplo si tenemos la clase persona(la única clase que existe en los ejemplos):


public class Persona
{
public Persona(){}

public virtual Guid Id { get; set; }
public virtual String NumeroIdentificacion { get; set; }
public virtual String Nombre{ get; set; }
public virtual DateTime FechaDeNacimiento { get; set; }
}
E intentamos guardarla nos enfrentamos a un error similar a:
SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM

Para poder evitar este error debemos asignarle a la propiedad DateTime que pueda ser null(llamada comúmnete como Nullable, esto se logra mediante el operador "?". Así, debemos cambiar nuestra clase a:


public class Persona
{
public Persona(){}

public virtual Guid Id { get; set; }
public virtual String NumeroIdentificacion { get; set; }
public virtual String Nombre{ get; set; }
public virtual DateTime? FechaDeNacimiento { get; set; }
}
Esto solucionaría nuestro problema.

No hay comentarios: