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 dc049d804d
commit a1904bf113

@ -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

@ -1,7 +1,7 @@
{
"Test": {
"Jet": {
"DefaultConnection": "DBQ=Jet.accdb"
}
"Test": {
"Jet": {
"DefaultConnection": "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Jet.accdb;Persist Security Info=False;"
}
}
}

Loading…
Cancel
Save