Skip to content

Commit

Permalink
Allow value comparers for supertypes of the mapping's type
Browse files Browse the repository at this point in the history
Necessary for primitive collection, where e.g. the comparer has type
IList<int> but the type mapping is for the concrete List<int>.

Related to/part of dotnet#25364
  • Loading branch information
roji committed May 20, 2023
1 parent c983103 commit 2375e3c
Showing 1 changed file with 6 additions and 6 deletions.
12 changes: 6 additions & 6 deletions src/EFCore/Storage/CoreTypeMapping.cs
Original file line number Diff line number Diff line change
Expand Up @@ -146,28 +146,28 @@ protected CoreTypeMapping(CoreTypeMappingParameters parameters)
Check.DebugAssert(
parameters.Comparer == null
|| converter != null
|| parameters.Comparer.Type == clrType,
|| parameters.Comparer.Type.IsAssignableFrom(clrType),
$"Expected {clrType}, got {parameters.Comparer?.Type}");
if (parameters.Comparer?.Type == clrType)
if (parameters.Comparer?.Type.IsAssignableFrom(clrType) == true)
{
_comparer = parameters.Comparer;
}

Check.DebugAssert(
parameters.KeyComparer == null
|| converter != null
|| parameters.KeyComparer.Type == parameters.ClrType,
|| parameters.KeyComparer.Type.IsAssignableFrom(parameters.ClrType),
$"Expected {parameters.ClrType}, got {parameters.KeyComparer?.Type}");
if (parameters.KeyComparer?.Type == clrType)
if (parameters.KeyComparer?.Type.IsAssignableFrom(clrType) == true)
{
_keyComparer = parameters.KeyComparer;
}

Check.DebugAssert(
parameters.ProviderValueComparer == null
|| parameters.ProviderValueComparer.Type == (converter?.ProviderClrType ?? clrType),
|| parameters.ProviderValueComparer.Type.IsAssignableFrom(converter?.ProviderClrType ?? clrType),
$"Expected {converter?.ProviderClrType ?? clrType}, got {parameters.ProviderValueComparer?.Type}");
if (parameters.ProviderValueComparer?.Type == (converter?.ProviderClrType ?? clrType))
if (parameters.ProviderValueComparer?.Type.IsAssignableFrom(converter?.ProviderClrType ?? clrType) == true)
{
_providerValueComparer = parameters.ProviderValueComparer;
}
Expand Down

0 comments on commit 2375e3c

Please sign in to comment.