2011-03-24 26 views
8

En la aplicación que estoy construyendo, tengo muchos campos decimales con una precisión y una escala específicas que deben correlacionarse desde una base de datos. Puedo lograr esto usando los métodos Precision() y Scale():¿Cómo puedo cambiar la escala predeterminada y la precisión de los decimales en Fluent NHibernate?

public class ClassAMap : ClassMap<ClassA> 
{ 
    public ClassAMap() 
    { 
     Map(x => x.Value).Precision(22).Scale(12); 
    } 
} 

¿Hay alguna manera de cambiar la precisión y la escala por defecto para los decimales, por lo que no tenga que acordarse de añadir las llamadas a Precision() y Scale() de cada decimal asignado?

Respuesta

13

Puede definir una PropertyConvention. A continuación está la idea general. (NO probado)

public class DecimalConvention : IPropertyConvention 
    { 
     public void Apply(IPropertyInstance instance) 
     { 
      if (instance.Type == typeof(decimal) || instance.Name == "Value") //Set the condition based on your needs 
      { 
       instance.Precision(22).Scale(12);  
      } 
     } 
    } 

Asegúrese de incluir esta convención cuando se configura Fluent.

+0

Impresionante, esto es lo que estaba buscando. – JChristian

+0

¿cómo puedo alterar la columna existente a una nueva precisión y escala decimal? esta solución no funcionó para mí –

Cuestiones relacionadas