public void Detector() { var date = DateTime.Now; var user1 = new User { Id = 1, Password = null, Posts = new List <Post>() { new Post() { CreatedDate = date, Description = date.Ticks.ToString(), Title = "²âÊÔ1", Id = 1, IsTransient = false, Author = new Author() { Title = null } }, new Post() { CreatedDate = date, Description = date.Ticks.ToString(), Title = "²âÊÔ", Id = 2, IsTransient = false, Author = new Author() { Title = "author" } }, new Post() { CreatedDate = date, Description = date.Ticks.ToString(), Title = "²âÊÔ", Id = 3, IsTransient = false, Author = new Author() { Title = "author" } }, new Post() { CreatedDate = date, Description = date.Ticks.ToString(), Title = "²âÊÔ2", Id = 4, IsTransient = false, Author = new Author() { Title = "author" } }, new Post() { CreatedDate = date, Description = date.Ticks.ToString(), Title = "²âÊÔb", Id = 5, IsTransient = false, Author = new Author() { Title = "author" } }, new Post() { CreatedDate = date, Description = date.Ticks.ToString(), Title = "²âÊÔ", Id = 6, IsTransient = false, Author = new Author() { Title = "author" } }, } }; var user2 = new User { Id = 1, Password = "******", Posts = new List <Post>() { new Post() { CreatedDate = date, Description = date.Ticks.ToString(), Title = "²âÊÔ", Id = 1, IsTransient = false, Author = new Author() { Title = "author" } }, new Post() { CreatedDate = date, Description = date.Ticks.ToString(), Title = "²âÊÔ", Id = 2, IsTransient = false, Author = new Author() { Title = "author" } }, new Post() { CreatedDate = date, Description = date.Ticks.ToString(), Title = "²âÊÔ", Id = 3, IsTransient = false, Author = new Author() { Title = "author" } }, new Post() { CreatedDate = date, Description = date.Ticks.ToString(), Title = "²âÊÔ", Id = 4, IsTransient = false, Author = new Author() { Title = "author" } }, new Post() { CreatedDate = date, Description = date.Ticks.ToString(), Title = "²âÊÔ", Author = new Author() { Title = "author2" } } } }; IChangeManager manager = new ChangeManager(); IChangeManagerFactory managerFactory = new ChangeManagerFactory(manager); IChangeDetector detector = new ChangeDetector(managerFactory); manager = detector.DetectChanges(user2, user1); }
public void Detector() { var date = DateTime.Now; var user1 = new User(1) { Password = null, Posts = new List <Post>() { new Post(1) { CreatedDate = date, Description = date.Ticks.ToString(), Title = "²âÊÔ1", Author = new Author(1) { Title = "author" } } , new Post(2) { CreatedDate = date, Description = date.Ticks.ToString(), Title = "²âÊÔ", Author = new Author(2) { Title = "author" } } , new Post(3) { CreatedDate = date, Description = date.Ticks.ToString(), Title = "²âÊÔ", Author = new Author(3) { Title = null } } , new Post(4) { CreatedDate = date, Description = date.Ticks.ToString(), Title = "²âÊÔ2", Author = null } , new Post(5) { CreatedDate = date, Description = date.Ticks.ToString(), Title = "²âÊÔb", Author = null } , new Post(6) { CreatedDate = date, Description = date.Ticks.ToString(), Title = "²âÊÔb", Author = new Author(3) { } } } }; var user2 = user1.Clone <User>(); user2.Password = ""; user2.Aaccount = null; var post1 = user2.Posts.FirstOrDefault(f => f.Id == 1); user2.Posts.Remove(post1); var post2 = user2.Posts.FirstOrDefault(f => f.Id == 2); post2.Title = "²âÊÔÐÞ¸Ä×Ó¼¶"; var post3 = user2.Posts.FirstOrDefault(f => f.Id == 3); post3.Author.Title = "²âÊÔÐÞ¸Ä×Ó×Ó¼¶"; var post4 = user2.Posts.FirstOrDefault(f => f.Id == 4); post4.Author = new Author(1) { Title = "Ìí¼Ó×Ó×Ó¼¶£¬ÉèÖÃID" }; var post5 = user2.Posts.FirstOrDefault(f => f.Id == 5); post5.Author = new Author() { Title = "Ìí¼Ó×Ó×Ó¼¶£¬²»ÉèÖÃID" }; var post6 = user2.Posts.FirstOrDefault(f => f.Id == 6); post6.Author = null; var post7 = new Post(7) { CreatedDate = date, Description = date.Ticks.ToString(), Title = "²âÊÔ", Author = null }; user2.Posts.Add(post7); CompareLogic compareLogic = new CompareLogic(); compareLogic.Config.MaxDifferences = int.MaxValue; compareLogic.Config.CompareStaticFields = false; //¾²Ì¬×ֶβ»±È½Ï compareLogic.Config.CompareStaticProperties = false; //¾²Ì¬ÊôÐÔ²»±È½Ï compareLogic.Config.Caching = true; compareLogic.Config.CustomComparers.Add(new ZopDictionaryComparer(RootComparerFactory.GetRootComparer())); compareLogic.Config.CustomComparers.Add(new ZopListComparer(RootComparerFactory.GetRootComparer())); compareLogic.Config.CustomComparers.Add(new EntityCollectionComparer(RootComparerFactory.GetRootComparer())); var result = compareLogic.Compare(user1, user2); ChangeManagerFactory changeManagerFactory = new ChangeManagerFactory(); IChangeManager changeManager = changeManagerFactory.Create(new EntityChange(user1, user2, 0), result); var ch = changeManager.GetChange(); string json = ch.ToJsonString(); User user3 = json.ToFromJson <User>(); }