예제 #1
0
        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();
                }
            }
        }