Skip to content

Commit 0a80c68

Browse files
fixup! Recompute hashcodes on deserialization
ToString are impacted by the type change.
1 parent eb162c6 commit 0a80c68

File tree

2 files changed

+12
-8
lines changed

2 files changed

+12
-8
lines changed

src/NHibernate.Test/CacheTest/FilterKeyFixture.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,13 @@ public void ToStringIncludeAll()
2020
var f = new FilterImpl(Sfi.GetFilterDefinition(filterName));
2121
f.SetParameter("pLike", "so%");
2222
var fk = new FilterKey(f);
23-
Assert.That(fk.ToString(), Is.EqualTo("FilterKey[DescriptionLike{'pLike'='so%'}]"), "Like");
23+
Assert.That(fk.ToString(), Is.EqualTo("FilterKey[DescriptionLike['[pLike, so%]']]"), "Like");
2424

2525
filterName = "DescriptionEqualAndValueGT";
2626
f = new FilterImpl(Sfi.GetFilterDefinition(filterName));
2727
f.SetParameter("pDesc", "something").SetParameter("pValue", 10);
2828
fk = new FilterKey(f);
29-
Assert.That(fk.ToString(), Is.EqualTo("FilterKey[DescriptionEqualAndValueGT{'pDesc'='something', 'pValue'='10'}]"), "Value");
29+
Assert.That(fk.ToString(), Is.EqualTo("FilterKey[DescriptionEqualAndValueGT['[pDesc, something]', '[pValue, 10]']]"), "Value");
3030
}
3131

3232
[Test]

src/NHibernate/Impl/Printer.cs

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
using System.Collections;
21
using System.Collections.Generic;
3-
2+
using System.Linq;
43
using NHibernate.Engine;
54
using NHibernate.Intercept;
65
using NHibernate.Metadata;
@@ -72,11 +71,16 @@ public string ToString(IType[] types, object[] values)
7271

7372
public string ToString(IDictionary<string, TypedValue> namedTypedValues)
7473
{
75-
IDictionary<string, string> result = new Dictionary<string, string>(namedTypedValues.Count);
74+
return ToString(namedTypedValues.AsEnumerable());
75+
}
76+
77+
internal string ToString(IEnumerable<KeyValuePair<string, TypedValue>> namedTypedValues)
78+
{
79+
IDictionary<string, string> result = new Dictionary<string, string>(namedTypedValues.Count());
7680

77-
foreach (KeyValuePair<string, TypedValue> me in namedTypedValues)
81+
foreach (var me in namedTypedValues)
7882
{
79-
TypedValue tv = me.Value;
83+
var tv = me.Value;
8084
result[me.Key] = tv.Type.ToLoggableString(tv.Value, _factory);
8185
}
8286

@@ -109,4 +113,4 @@ public Printer(ISessionFactoryImplementor factory)
109113
_factory = factory;
110114
}
111115
}
112-
}
116+
}

0 commit comments

Comments
 (0)