public void CanDetectUpdateMetadataChanges() { using (var store = NewDocumentStore()) { using (var session = store.OpenSession()) { session.Store(new UserData { Id = 123, Name = "user1", Salary = 12.5, Date = DateTime.Now }, "UserDatas/1"); session.Store(new UserData { Id = 1234, Name = "user2", Salary = 12.51, Date = new DateTime(2014, 1, 1) }, "UserDatas/2"); session.Store(new UserData { Id = 1235, Name = "user3", Salary = 12.45, Date = new DateTime(2014, 1, 2) }, "UserDatas/3"); session.SaveChanges(); } using (var session = store.OpenSession()) { var userdata2 = session.Load <UserData>("UserDatas/2"); RavenJObject metadata2 = session.Advanced.GetMetadataFor(userdata2); KeyValuePair <string, RavenJToken> mdata2 = metadata2.ElementAt(2); metadata2[mdata2.Key] = "changes"; KeyValuePair <string, RavenJToken> mdata3 = metadata2.ElementAt(3); metadata2[mdata3.Key] = "add changes"; int supposedChangesNumber = 1; IDictionary <string, DocumentsChanges[]> changes3 = session.Advanced.WhatChanged(); Assert.Equal(supposedChangesNumber, changes3.Count); Assert.True(changes3.ContainsKey("UserDatas/2")); DocumentsChanges[] data3 = { }; if (changes3.TryGetValue("UserDatas/2", out data3)) { Assert.Equal(data3.Length, 2); } session.SaveChanges(); } } }