Nach viel Debuggen, Fummeln und Testen habe ich es endlich herausgefunden. Wie sich herausstellte, war mein Problem nicht das Schreiben in Mongo, sondern das Zurücklesen aus Mongo, nachdem es geschrieben worden war.
Die Sitecore-Dokumentation scheint (wie üblich) einen ziemlich grundlegenden Teil der Funktionsweise davon vollständig zu übersehen. Etwa ein Drittel der ganz unten in den Dokumenten steht :
Ok, das ist sehr irreführend. Was dieses EnsureAttribute
scheint die Daten für die Facette aus Mongo in die aktuelle Klasse zu laden. Wenn Sie dies nicht für jede Eigenschaft tun in Ihrer Facette wird dann der Wert aus der mongoDb nicht gesetzt! Das war mein Fehler, ich hatte nicht jede Eigenschaft in der Klasse „abgesichert“.
Was also passiert ist,
- Ich gebe meine Daten in die Facette ein
- Die Facettendaten bleiben in der Sitzung bestehen und ich kann sie sehen, darauf zugreifen, sie ändern usw.
- Die Daten werden schließlich in Mongo (xDb, wenn Sie müssen) geleert
- der Benutzer zurückkehrt, das System erkennt ihn korrekt (der Benutzer muss nicht identifiziert werden , der
SC_ANALYTICS_GLOBAL_COOKIE
erledigt das für Sie) - Aber es lädt die Daten nicht (aus Mongo und zurück in die Sitzung), es sei denn, Sie "sichern" es.
Also das EnsureAttribute
"deklariert keinen Werttyp" (das ist meiner Meinung nach einfach total falsch) es lädt die Daten aus mongodb und in die aktuelle Session
.