public static LocalProcess ReserveLocalProcess(Participant participant, string address) { using (DaemonEntities entities = new DaemonEntities()) { entities.Attach(participant); try { int serverPort = MxpConstants.DefaultServerPort; if ((from l in entities.LocalProcess select l).Count() > 0) { serverPort = (from l in entities.LocalProcess select l).Max(l => l.ServerPort) + 2; } int hubPort = serverPort + 1; LocalProcess localProcess = new LocalProcess { LocalProcessId = Guid.NewGuid(), Participant = participant, Name = "(" + serverPort + "," + hubPort + ")", Address = address, ServerPort = serverPort, HubPort = hubPort, Enabled = false }; entities.AddToLocalProcess(localProcess); entities.SaveChanges(); entities.Detach(localProcess); return(localProcess); } finally { entities.Detach(participant); } } }