public void Hello(DT.Slave slaveInfo) { RoleVerifier.AuthenticateForAnyRole(HiveRoles.Slave); if (UserManager.CurrentUser.UserName != "hiveslave") { slaveInfo.OwnerUserId = UserManager.CurrentUserId; } var pm = PersistenceManager; using (new PerformanceLogger("Hello")) { var slaveDao = pm.SlaveDao; pm.UseTransaction(() => { var slave = slaveDao.GetById(slaveInfo.Id); if (slave == null) { slaveDao.Save(slaveInfo.ToEntity()); } else { bool oldIsAllowedToCalculate = slave.IsAllowedToCalculate; Guid?oldParentResourceId = slave.ParentResourceId; slaveInfo.CopyToEntity(slave); slave.IsAllowedToCalculate = oldIsAllowedToCalculate; slave.ParentResourceId = oldParentResourceId; slave.LastHeartbeat = DateTime.Now; slave.SlaveState = DA.SlaveState.Idle; } pm.SubmitChanges(); }); } }