Exemplo n.º 1
0
        public uint GetItemClass(uint itemTemplateId)
        {
            var query  = _worldContext.CreateNoTrackingQuery(_worldContext.ItemTemplateItemClassEntries);
            var result = query.FirstOrDefault(e => e.ItemTemplateId == itemTemplateId);

            if (result == null)
            {
                throw new EntityNotFoundException(nameof(ItemTemplateItemClassEntry), nameof(ItemTemplateItemClassEntry.ItemTemplateId), itemTemplateId);
            }
            return(result.ItemClass);
        }
Exemplo n.º 2
0
        private RandomNameEntry GetRandomNameEntry(Gender gender, NameType nameType)
        {
            var query = _worldContext.CreateNoTrackingQuery(_worldContext.RandomNameEntries);

            // This is not the fastest implementation, as the random evaluation is done on client side to be DBMS agnostic.
            // Execution is still so fast that no wait time occurs in the client.
            // An alternative but more complex way would be to load count per name type (first/male, first/female, last),
            // get a random between 0 and the count and call "query.Skip(random).FirstOrDefault();"
            // This is possible, as the random names provided by the database don't change (at runtime).
            var randomEntry = query
                              .Where(e => e.Type == (byte)nameType)
                              .Where(e => e.Gender == (byte)gender || e.Gender == (byte)Gender.Neutral)
                              .AsEnumerable()
                              .OrderBy(e => Guid.NewGuid())
                              .FirstOrDefault();

            return(randomEntry);
        }