The mappings in the end have to match what ODP.NET creates from the values read from the DB. This means that a NUMBER(12,2) will result in a double. However, more Oracle types result in a double. So doing model first development, for some .NET types, there are several DB types possible. The driver has a rule set from which it picks the right Oracle type, if possible. Unfortunately, there's no .NET type which will result in a NUMBER(12,2), if you specify Decimal (18, 2), it will result in NUMBER(18, 2), as NUMBER(18, 2) will result in a Decimal as well. However, as NUMBER(12, 2) results in a double in ODP.NET, you can only state it as .NET type 'double' in the entity field, but ... that leads to a float, not a NUMBER(12,2) as double doesn't have a precision/scale.
I know this is unfortunate, but it's a result of the fact the types don't map 1:1 onto each other. You can change the type of the resulting field though: in the entity mappings, select the field, and click the 'edit field', which will allow you to change the table field's type specifics.
Does this solve your problem?