Po wielu debugowaniach, manipulacjach i testowaniu w końcu to rozgryzłem. Okazało się, że moim problemem nie było pisanie do mongo, ale czytanie z powrotem z mongo, gdy zostało napisane.
Dokumentacja sitecore wydaje się (jak zwykle) całkowicie pomijać dość podstawową część tego działania. Około jedna trzecia w dół dokumentów, które zawiera :
Ok, to bardzo mylące. Co to EnsureAttribute
wydaje się, że wystarczy załadować dane dla aspektu do bieżącej klasy z mongo. Jeśli nie zrobisz tego dla każdej usługi w twoim aspekcie to nie ustawia wartości z mongoDb! To był mój błąd, nie „zapewniłem” wszystkich właściwości w klasie.
Więc to, co się działo,
- Wstawiam swoje dane do aspektu
- Dane aspektu pozostają w sesji i mogę je zobaczyć, uzyskać do nich dostęp, zmienić je itp.
- Dane są ostatecznie opróżniane do mongo (xDb, jeśli musisz)
- użytkownik powraca, system rozpoznaje go poprawnie (nie ma potrzeby identyfikacji użytkownika ,
SC_ANALYTICS_GLOBAL_COOKIE
robi to dla ciebie) - Ale nie ładuje danych (z mongo iz powrotem do sesji), chyba że „zapewnisz” to.
Tak więc EnsureAttribute
nie „deklaruje typu wartości” (moim zdaniem jest to po prostu całkowicie błędne) ładuje dane z mongodb i do bieżącej Session
.