public virtual TViewModel Save(TViewModel viewModel)
    {
        if (viewModel.Id != Guid.Empty)
        {
            // The ModelObject Id is not empty, we're either updating an existing ModelObject
            // or we're inserting a new ModelObject via sync
            var model = _repository.GetById(viewModel.Id);
            if (model != null)
            {
                // Looks like we're updating a ModelObject because it's already in the database.
                _repository.Update(ToModel.BuildFrom(viewModel));
                return(ToViewModel.BuildFrom(_repository.GetById(viewModel.Id)));
            }
        }
        // The ModelObject is being created, either via a Sync (Guid Exists), or via an Insert (Guid doesn't Exist)
        var id = _repository.Create(ToModel.BuildFrom(viewModel));

        return(ToViewModel.BuildFrom(_repository.GetById(id)));
    }