protected bool Equals(DocumentsChanges other) { return string.Equals(FieldOldValue, other.FieldOldValue) && string.Equals(FieldNewValue, other.FieldNewValue) && string.Equals(FieldOldType, other.FieldOldType) && string.Equals(FieldName, other.FieldName) && string.Equals(FieldNewType, other.FieldNewType) && Change == other.Change; }
protected bool Equals(DocumentsChanges other) { return(string.Equals(FieldOldValue, other.FieldOldValue) && string.Equals(FieldNewValue, other.FieldNewValue) && string.Equals(FieldOldType, other.FieldOldType) && string.Equals(FieldName, other.FieldName) && string.Equals(FieldNewType, other.FieldNewType) && Change == other.Change); }
public void CanDetectManyObjectChanges() { using (var store = NewDocumentStore()) { using (var session = store.OpenSession()) { session.Store(new UserData { Id = 123, Name = "user1", Salary = 12.5, Date = DateTime.Now, Exam1Marks = new[] { 88, 99, 77 } }, "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"); IDictionary<string, DocumentsChanges[]> resChanges1 = session.Advanced.WhatChanged(); int supposedChangesNumber = 3; Assert.Equal(supposedChangesNumber, resChanges1.Count); Assert.True(resChanges1.ContainsKey("UserDatas/1")); Assert.True(resChanges1.ContainsKey("UserDatas/2")); Assert.True(resChanges1.ContainsKey("UserDatas/3")); session.SaveChanges(); IDictionary<string, DocumentsChanges[]> resChanges2 = session.Advanced.WhatChanged(); supposedChangesNumber = 0; Assert.Equal(supposedChangesNumber, resChanges2.Count); } using (IDocumentSession session = store.OpenSession()) { var userdata2 = session.Load<UserData>("UserDatas/2"); userdata2.Salary = 556; var userdata1 = session.Load<UserData>("UserDatas/1"); userdata1.Exam1Marks[0] = 56; userdata1.Salary = 54.7; IDictionary<string, DocumentsChanges[]> changes3 = session.Advanced.WhatChanged(); int ExpectedChangesCount = 2; Assert.Equal(ExpectedChangesCount, changes3.Count); Assert.True(changes3.ContainsKey("UserDatas/1")); Assert.True(changes3.ContainsKey("UserDatas/2")); var supposedChanges = new DocumentsChanges { Change = DocumentsChanges.ChangeType.FieldChanged, FieldName = "Salary", FieldNewType = "Float", FieldNewValue = "556", FieldOldType = "Float", FieldOldValue = "12.51" }; DocumentsChanges[] data2 = { }; if (changes3.TryGetValue("UserDatas/2", out data2)) { Assert.Equal(data2.Length, 1); Assert.Equal(data2[0], supposedChanges); } DocumentsChanges[] data1 = { }; if (changes3.TryGetValue("UserDatas/1", out data1)) { Assert.Equal(data1.Length, ExpectedChangesCount); //UserDatas/1 was changed twice } session.SaveChanges(); userdata1 = session.Load<UserData>("UserDatas/1"); int[] newMark = { 67, 65 }; List<int> list = userdata1.Exam1Marks.ToList(); list.AddRange(newMark); userdata1.Exam1Marks = list.ToArray(); IDictionary<string, DocumentsChanges[]> changes4 = session.Advanced.WhatChanged(); DocumentsChanges[] data4 = { }; if (changes4.TryGetValue("UserDatas/1", out data4)) { Assert.Equal(data4.Length, 2); } session.SaveChanges(); userdata1 = session.Load<UserData>("UserDatas/1"); int numToRemove = 99; int numIndex = Array.IndexOf(userdata1.Exam1Marks, numToRemove); userdata1.Exam1Marks = userdata1.Exam1Marks.Where((val, idx) => idx != numIndex).ToArray(); numToRemove = 77; numIndex = Array.IndexOf(userdata1.Exam1Marks, numToRemove); userdata1.Exam1Marks = userdata1.Exam1Marks.Where((val, idx) => idx != numIndex).ToArray(); var userdata = session.Load<UserData>("UserDatas/3"); session.Delete(userdata); session.Store(new UserData { Id = 2235, Name = "user4", Salary = 32.45, Date = new DateTime(2014, 2, 2) }, "UserDatas/4"); ExpectedChangesCount = 3; IDictionary<string, DocumentsChanges[]> changes7 = session.Advanced.WhatChanged(); Assert.Equal(ExpectedChangesCount, changes7.Count); Assert.True(changes7.ContainsKey("UserDatas/1")); Assert.True(changes7.ContainsKey("UserDatas/3")); Assert.True(changes7.ContainsKey("UserDatas/4")); session.SaveChanges(); } } }
public void CanDetectObjectUpdateChanges() { using (var store = NewDocumentStore()) { using (var session = store.OpenSession()) { session.Store(new UserData { Id = 123, Name = "user1", Salary = 12.5, Date = DateTime.Now, Exam1Marks = new[] { 88, 99, 77 }, Exam2Marks = new[] { 77, 78, 79 } }, "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"); userdata2.Salary = 556; var userdata1 = session.Load<UserData>("UserDatas/1"); userdata1.Exam1Marks[0] = 56; userdata1.Exam2Marks[0] = 88; userdata1.Salary = 54.7; IDictionary<string, DocumentsChanges[]> changes3 = session.Advanced.WhatChanged(); int supposedChangesNumber = 2; Assert.Equal(supposedChangesNumber, changes3.Count); Assert.True(changes3.ContainsKey("UserDatas/1")); Assert.True(changes3.ContainsKey("UserDatas/2")); var supposedChanges = new DocumentsChanges { Change = DocumentsChanges.ChangeType.FieldChanged, FieldName = "Salary", FieldNewType = "Float", FieldNewValue = "556", FieldOldType = "Float", FieldOldValue = "12.51" }; DocumentsChanges[] data2; if (changes3.TryGetValue("UserDatas/2", out data2)) { Assert.Equal(data2.Length, 1); Assert.Equal(data2[0], supposedChanges); } DocumentsChanges[] data1; if (changes3.TryGetValue("UserDatas/1", out data1)) { Assert.Equal(data1.Length, 3); } session.SaveChanges(); } } }