Setelah banyak melakukan debugging, mengutak-atik, dan menguji saya akhirnya menemukan ini. Masalah saya, ternyata, bukan penulisan ke mongo itu dalam pembacaan kembali dari mongo setelah ditulis.
Dokumentasi inti situs tampaknya (seperti biasa) benar-benar melewatkan bagian yang agak mendasar dari cara kerja ini. Sekitar sepertiga dari turunkan dokumen yang disebutkan :
Oke, ini sangat menyesatkan. Apa ini EnsureAttribute
tampaknya lakukan adalah memuat data untuk faset ke dalam kelas saat ini dari mongo. Jika Anda tidak melakukan ini untuk setiap properti di segi Anda maka itu tidak menetapkan nilai dari mongoDb! Ini adalah kesalahan saya, saya tidak "memastikan" setiap properti di kelas.
Jadi yang terjadi adalah,
- Saya memasukkan data saya ke dalam faset
- data faset tetap ada di Sesi dan saya dapat melihat, mengaksesnya, mengubahnya, dll.
- Data akhirnya di-flush ke mongo (xDb jika perlu)
- pengguna kembali, sistem mengenalinya dengan benar (tidak perlu mengidentifikasi pengguna ,
SC_ANALYTICS_GLOBAL_COOKIE
melakukan ini untukmu) - Tapi itu tidak memuat data (keluar dari mongo dan kembali ke sesi) kecuali Anda "memastikan" itu.
Jadi EnsureAttribute
tidak "mendeklarasikan jenis nilai" (ini benar-benar salah menurut saya) itu memuat data dari mongodb dan masuk ke Session
saat ini .