Esempio n. 1
0
        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>();
        }