public IUniverseCreationResult Create(string name) { var existingUniverses = Context.Universes.Where(u => u.Name == name).ToImmutableList(); if (existingUniverses.Any()) { return UniverseCreationResult.AlreadyExists(existingUniverses.First().Id); } var newUniverse = new UniverseDao { Name = name }; Context.Universes.Add(newUniverse); Context.SaveChanges(); // TODO Test if this ID is set correctly after SaveChanges return UniverseCreationResult.Success(newUniverse.Id); }
public IReadOnlyList<IUniverseDao> GetOrCreate(IReadOnlyList<string> universeNames) { var existing = Context.Universes.Where(u => universeNames.Contains(u.Name)).ToImmutableList(); var missingNames = universeNames.Except(existing.Select(u => u.Name)); var allUniverses = new List<UniverseDao>(existing); foreach (var name in missingNames) { var universe = new UniverseDao { Name = name }; Context.Universes.Add(universe); allUniverses.Add(universe); } Context.SaveChanges(); return allUniverses; }