示例#1
0
        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);
        }
示例#2
0
        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;
        }