public void UserExample() { var interests = new HashSet<string> { "distributed systems", "Erlang" }; var joe = new User("Joe", "Armstrong", interests); var entityManager = new EntityManager(client); entityManager.Add(joe); var repo = new UserRepository(client); repo.Save(joe); joe.VisitPage(); joe.AddInterest("riak"); repo.UpgradeAccount(joe); var joeFetched = repo.Get(joe.ID); Assert.GreaterOrEqual(joe.PageVisits, 0); Assert.Contains("riak", joeFetched.Interests.ToArray()); PrintObject(joeFetched); repo.DowngradeAccount(joe); joeFetched = repo.Get(joe.ID); PrintObject(joeFetched); }
private void HandlePropertyChanged(object sender, PropertyChangedEventArgs e) { var user = sender as User; if (user != null) { var repository = new UserRepository(client); if (e.PropertyName == "PageVisits") { repository.IncrementPageVisits(user); } else if (e.PropertyName.StartsWith("Interests:")) { var op = e.PropertyName.Split(EventDataChars); Debug.Assert(op[0] == "Interests"); switch (op[1]) { case "Added": repository.AddInterest(user, op[2]); break; case "Removed": repository.RemoveInterest(user, op[2]); break; default: throw new InvalidOperationException( string.Format("Unexpected Interests event action: {0}", op[1])); } } else if (e.PropertyName.StartsWith("AccountStatus:")) { var op = e.PropertyName.Split(EventDataChars); Debug.Assert(op[0] == "AccountStatus"); if (op[1] == TrueStr) { repository.UpgradeAccount(user); } else if (op[1] == FalseStr) { repository.DowngradeAccount(user); } else { throw new InvalidOperationException( string.Format("Unexpected AccountStatus event action: {0}", op[1])); } } } }