Commit 7f3220db authored by Marc Gravell's avatar Marc Gravell

prefer an exact-case backing-field match over a wrong-case regular field...

prefer an exact-case backing-field match over a wrong-case regular field (essentially: this promotes get-only properties over regular fields)
parent 5e4b2726
...@@ -168,11 +168,11 @@ public SqlMapper.IMemberMap GetMember(string columnName) ...@@ -168,11 +168,11 @@ public SqlMapper.IMemberMap GetMember(string columnName)
var backingFieldName = $"<{columnName}>k__BackingField"; var backingFieldName = $"<{columnName}>k__BackingField";
// preference order is: // preference order is:
// exact match over underscre match, backing fields over regular fields, exact case over wrong case // exact match over underscre match, exact case over wrong case, backing fields over regular fields, match-inc-underscores over match-exc-underscores
var field = _fields.FirstOrDefault(p => string.Equals(p.Name, columnName, StringComparison.Ordinal)) var field = _fields.FirstOrDefault(p => string.Equals(p.Name, columnName, StringComparison.Ordinal))
?? _fields.FirstOrDefault(p => string.Equals(p.Name, columnName, StringComparison.OrdinalIgnoreCase)) ?? _fields.FirstOrDefault(p => string.Equals(p.Name, backingFieldName, StringComparison.Ordinal))
?? _fields.FirstOrDefault(p => string.Equals(p.Name, backingFieldName, StringComparison.Ordinal)) ?? _fields.FirstOrDefault(p => string.Equals(p.Name, columnName, StringComparison.OrdinalIgnoreCase))
?? _fields.FirstOrDefault(p => string.Equals(p.Name, backingFieldName, StringComparison.OrdinalIgnoreCase)); ?? _fields.FirstOrDefault(p => string.Equals(p.Name, backingFieldName, StringComparison.OrdinalIgnoreCase));
if (field == null && MatchNamesWithUnderscores) if (field == null && MatchNamesWithUnderscores)
{ {
...@@ -180,8 +180,8 @@ public SqlMapper.IMemberMap GetMember(string columnName) ...@@ -180,8 +180,8 @@ public SqlMapper.IMemberMap GetMember(string columnName)
backingFieldName = $"<{effectiveColumnName}>k__BackingField"; backingFieldName = $"<{effectiveColumnName}>k__BackingField";
field = _fields.FirstOrDefault(p => string.Equals(p.Name, effectiveColumnName, StringComparison.Ordinal)) field = _fields.FirstOrDefault(p => string.Equals(p.Name, effectiveColumnName, StringComparison.Ordinal))
?? _fields.FirstOrDefault(p => string.Equals(p.Name, effectiveColumnName, StringComparison.OrdinalIgnoreCase))
?? _fields.FirstOrDefault(p => string.Equals(p.Name, backingFieldName, StringComparison.Ordinal)) ?? _fields.FirstOrDefault(p => string.Equals(p.Name, backingFieldName, StringComparison.Ordinal))
?? _fields.FirstOrDefault(p => string.Equals(p.Name, effectiveColumnName, StringComparison.OrdinalIgnoreCase))
?? _fields.FirstOrDefault(p => string.Equals(p.Name, backingFieldName, StringComparison.OrdinalIgnoreCase)); ?? _fields.FirstOrDefault(p => string.Equals(p.Name, backingFieldName, StringComparison.OrdinalIgnoreCase));
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment