public void SaveRoleOperationMapping(RoleOperationMappingModel data) { if (!roleRepository.IsExist(data.RoleId)) { throw new DataValidationException(string.Format(MessageResource.Error_ReferenceDataNotExist, "Role")); } CollectionSave.Execute( source: data.OperationIds, destination: roleRepository.GetOperations(data.RoleId).ToList(), matchFunc: (t1, t2) => t1 == t2.OperationId, addFunc: t1 => roleRepository.AddOperation(new RoleOperation() { RoleId = data.RoleId, OperationId = t1 }), updateFunc: (t1, t2) => { }, removeFunc: t2 => roleRepository.RemoveOperation(t2)); unitOfWork.SaveChanges(); }