如何在Fluent NHibernate中更改小数的默认比例和精度?

时间:2011-03-24 22:48:44

标签: c# .net nhibernate fluent-nhibernate

在我正在构建的应用程序中,我有许多十进制字段,需要从数据库映射特定的精度和比例。我可以使用Precision()Scale()方法实现此目的:

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

有没有办法更改小数的默认精度和小数位数,所以我不需要记得为每个小数映射添加对Precision()Scale()的调用?

1 个答案:

答案 0 :(得分:13)

您可以定义PropertyConvention。以下是一般的想法。 (未经测试)

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);    
            }
        }
    }

确保在配置Fluent时包含此约定。