From f3b9b979a1fd8e0bb08736d1d1486a535f3f3611 Mon Sep 17 00:00:00 2001 From: maliming Date: Fri, 29 Sep 2023 14:55:14 +0800 Subject: [PATCH] Handle the case where the parameter is `null` --- .../ExtraPropertyDictionaryValueComparer.cs | 26 ++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/ValueComparers/ExtraPropertyDictionaryValueComparer.cs b/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/ValueComparers/ExtraPropertyDictionaryValueComparer.cs index dca9ee0fc0..27701d196d 100644 --- a/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/ValueComparers/ExtraPropertyDictionaryValueComparer.cs +++ b/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/ValueComparers/ExtraPropertyDictionaryValueComparer.cs @@ -9,9 +9,29 @@ public class ExtraPropertyDictionaryValueComparer : ValueComparer d1!.SequenceEqual(d2!), - d => d.Aggregate(0, (k, v) => HashCode.Combine(k, v.GetHashCode())), - d => new ExtraPropertyDictionary(d)) + (a, b) => Compare(a, b), + d => d.Aggregate(0, (k, v) => HashCode.Combine(k, v.GetHashCode())), + d => new ExtraPropertyDictionary(d)) { } + + private static bool Compare(ExtraPropertyDictionary? a, ExtraPropertyDictionary? b) + { + if (ReferenceEquals(a, b)) + { + return true; + } + + if (a is null) + { + return b is null; + } + + if (b is null) + { + return false; + } + + return a!.SequenceEqual(b!); + } }