This does the trick:
foreach (var cm in cfg.ClassMappings)
{
foreach (var p in cm.PropertyIterator)
{
if (p.Type is DecimalType)
{
foreach (var c in p.ColumnIterator.OfType<Column>())
{
c.Precision = 20;
}
}
}
}
Make sure you call this before you build the session factory. "cfg" is the
Configuration instance. Check with this:
var cm1 = cfg.ClassMappings.Single(c => c.MappedClass == typeof(Product));//any
class with Decimal propertiesvar p1 = cm1.GetProperty("Price");//any Decimal
propertyvar c1 = p1.ColumnIterator.OfType<Column>().Single();
Assert.IsTrue(c1.Precision == 20);
RP
On Thursday, August 21, 2014 1:55:21 AM UTC+1, Michael Karmazin wrote:
>
> Ricardo, thanks for that!
>
> Could I ask you to show an example of how to do it? I cannot find anything
> related in the documentation.
>
> Thanks,
> Michael.
>
>
> On Tuesday, August 19, 2014 9:09:32 PM UTC+10, Ricardo Peres wrote:
>>
>> You can mix both, that is, you can specify a convention for all
>> properties of type decimal on top of the hbm.xml mappings.
>>
>> RP
>>
>> On Tuesday, August 19, 2014 7:01:23 AM UTC+1, Michael Karmazin wrote:
>>>
>>> I'm upgrading a very large project from old-old-old NH2.0.0 to NH3.3.3.
>>>
>>> Apart from many other problems that are mainly solved, there is a change
>>> in decimal mapping behaviour: it seems that the default scale for decimal
>>> values in NH3.3.3 is 5, while the old one has at least 6. So when saving a
>>> decimal to the database, the old one saves 0.654321 as it is, while NH3.3.3
>>> saves it as 0.654320.
>>>
>>> We're using hbm.xml mapping files. Of course it's possible to specifiy
>>> the scale and precision for every decimal property explicitly, but there
>>> are thousands properties in our classes in total and about 500 of them are
>>> decimal - so that could be quite a task. I'm wondering is there any
>>> resonable way to specify default presicision and scale for us?
>>>
>>> I already found the posts which suggest to go the ModelMapper way (e.g.
>>> http://stackoverflow.com/questions/15948439/nhibernate-map-all-decimals-with-the-same-precision-and-scale),
>>>
>>> but I cannot see how I can use it with hbm.xml files.
>>>
>>> Thanks,
>>> Michael.
>>>
>>
--
You received this message because you are subscribed to the Google Groups
"nhusers" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/nhusers.
For more options, visit https://groups.google.com/d/optout.