Set the precision to be maximum of 28 (Jet limit).

When using property.HasConversion<decimal>() the default for EF Core is with precision 38 and scale 17 which is passed Jet's limit
pull/137/head
Christopher Jolly 3 years ago
parent acc3fd5223
commit 950089a113

@ -53,7 +53,20 @@ namespace EntityFrameworkCore.Jet.Storage.Internal
/// doing so can result in application failures when updating to a new Entity Framework Core release.
/// </summary>
protected override RelationalTypeMapping Clone(RelationalTypeMappingParameters parameters)
=> new JetDecimalTypeMapping(parameters);
{
var precision = parameters.Precision;
var scale = parameters.Scale;
if (parameters.Precision is > 28)
{
int prec_diff = parameters.Precision.Value - 28;
precision = 28;
if (parameters.Scale is > 28)
{
scale = parameters.Scale.Value - prec_diff;
}
}
return new JetDecimalTypeMapping(parameters.WithPrecisionAndScale(precision, scale));
}
/// <summary>
/// This is an internal API that supports the Entity Framework Core infrastructure and not subject to

Loading…
Cancel
Save