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))); }