Na veel debuggen, prutsen en testen kwam ik er eindelijk achter. Mijn probleem, zo bleek, was niet het schrijven naar Mongo, het was in het teruglezen van Mongo nadat het was geschreven.
De sitecore-documentatie lijkt (zoals gewoonlijk) een nogal fundamenteel onderdeel van de werking hiervan volledig te missen. Ongeveer een derde van de ver weg in de documenten die erin staan :
Oké, dit is erg misleidend. Wat dit EnsureAttribute
lijkt te doen, is het laden van de gegevens voor het facet in de huidige klasse van mongo. Als je dit niet doet voor elke eigenschap in uw facet, dan stelt het niet de waarde van de mongoDb in! Dit was mijn fout, ik had niet elke eigenschap in de klas "gewaarborgd".
Dus wat er gebeurde is,
- Ik heb mijn gegevens in het facet geplaatst
- de facetgegevens blijven bestaan in de sessie en ik kan ze zien, openen, wijzigen, enz.
- De gegevens worden uiteindelijk naar Mongo gespoeld (xDb als het moet)
- de gebruiker komt terug, het systeem herkent ze correct (het is niet nodig om de gebruiker te identificeren , de
SC_ANALYTICS_GLOBAL_COOKIE
doet dit voor u) - Maar het laadt de gegevens niet (uit mongo en terug in de sessie) tenzij je het "verzekert".
Dus de EnsureAttribute
"declareert geen waardetype" (dit is gewoon helemaal verkeerd naar mijn mening) het laadt de gegevens uit mongodb en in de huidige Session
.