public User Authenticate(string facebookAccessToken) { GameNickEntities entities = new GameNickEntities(); FacebookClient fbclient = new FacebookClient(facebookAccessToken); dynamic me = fbclient.Get("me"); long myId = (long)Convert.ToUInt64(me.id.ToString()); var exists = from users in entities.Users where users.FacebookID == myId select users; if (exists.Count() > 0) { exists.First().Name = me.name; exists.First().FacebookAccessToken = facebookAccessToken; exists.First().GameNickAccessToken = Guid.NewGuid(); entities.SaveChanges(); User _me = exists.First(); _me.Status.Load(); _me.GameNicks.Load(); return _me; } // ReSharper disable RedundantIfElseBlock else // ReSharper restore RedundantIfElseBlock { User user = User.CreateUser(myId, 0); user.Name = me.name; // check that the ID is updated to a new unique value when it's added entities.AddToUsers(user); entities.SaveChanges(); // todo: update the userID before returing it return entities.Users.First(u => u.FacebookID == myId);//user; } }