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

JCh*_*ian 8 .net c# nhibernate fluent-nhibernate

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

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

有没有办法改变小数的默认精度和比例,所以我不需要记得为每个十进制映射添加调用Precision()Scale()

Wor*_*und 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);    
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

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