2009-10-15 11 views
6

¿Alguien sabe de qué manera podría establecer a través de la asignación del valor predeterminado de una columna para que, por ejemplo, cuando genero DB de mapeos, ¿tendría la columna DateTime con getdate() como valor predeterminado?FluentNHibernate - Estableciendo el valor por defecto para las columnas DB (SQL Server)

me trataron en lo que va (se ve como exactlly lo que necesito) pero no funciona

this.Map(x => x.LastPersistedOn, "DateModified") 
    .Access.Property() 
    .Default("getdate()"); 
+0

Tengo el mismo problema en 1.0 con fluidez y no hay em para ser una solución, puedes hacerlo a través de eventos, pero esto no siempre es apropiado. ¿Alguien mas? – row1

+0

posible duplicado de [NHibernate + columna getdate() predeterminada] (http://stackoverflow.com/questions/1145197/nhibernate-default-getdate-column) –

Respuesta

6

acabo intentado fijar algunos valores por defecto y ha funcionado como se esperaba. Estoy usando Fluent como recuperación de Git el 24.05.2010 por lo que actualizar su copia puede resolver su problema.
Mapeo

public class SampleEntity 
{ 
    public virtual DateTime DateTimeProperty { get; set; } 
} 

Con

public class SampleEntityMap 
     : ClassMap<SampleEntity> 
{ 
    public SampleEntityMap() 
    { 
    Map(x => x.DateTimeProperty, "DateTimeColumn") 
      .Access.Property() //actually not necessary 
      .Not.Nullable() 
      .Default("getDate()"); 
    } 
} 

esto producirá el siguiente código SQL (desde la salida de la consola)

create table SampleEntity(
    DateTimeColumn DATETIME default getDate() not null 
) 

-
Dom

4

La manera de hacer esto es asignar la corriente DateTime en el código en lugar de utilizar el valor por defecto en el base de datos. Luego trátela como una columna normal. Me pareció un poco extraño al principio, desde un fondo de diseño basado en modelos, pero la gestión de los valores predeterminados en el nivel POCO es la forma DDD de hacerlo.

sería bueno escuchar las opiniones de otros demasiado

+1

El problema que tengo con esto es que depende del reloj de los usuarios. Si no es un usuario final si tiene la aplicación ejecutándose en dos zonas horarias diferentes, ya es bastante complicado. – hometoast

+0

Algo más en que pensar es en los datos existentes. Sé que esta es una publicación anterior, pero si agrega un nuevo campo a una clase/tabla/mapa existente, no siempre quiere que el valor predeterminado sea lo que normalmente sería el defualt (por ejemplo, una columna booleana que desee). el valor predeterminado para ser verdadero en todos los registros existentes) – DevTheo

Cuestiones relacionadas