Projekt

Obecné

Profil

« Předchozí | Další » 

Revize ecb333b6

Přidáno uživatelem Vojtěch Bartička před asi 2 roky(ů)

Optimized database access - prefetch tags and categories

Zobrazit rozdíly:

Backend/Core/Services/TagService/TagServiceEF.cs
25 25

  
26 26
        public TagTreeResponse GetTagTree()
27 27
        {
28
            // Prefetch from DB
28 29
            var tagCategories = databaseContext.TagCategories.Select(tc => tc).ToList();
30
            var tags = databaseContext.Tags.Select(tc => tc).ToList();
31
            var subTags = databaseContext.SubTags.Select(tc => tc).ToList();
32

  
29 33
            var tagCategoriesDTOs = new List<TagCategoryInfo>();
30 34
            foreach (var tagCategory in tagCategories)
31 35
            {
32 36
                var tagCategoryDTO = mapper.Map<TagCategoryInfo>(tagCategory);
33
                var tags = databaseContext.Tags.Where(t => t.Category == tagCategory).ToList();
37
                var categoryTags = tags.Where(t => t.Category == tagCategory);
34 38
                var tagDTOs = new List<TagInfo>();
35 39

  
36
                foreach (var tag in tags)
40
                foreach (var tag in categoryTags)
37 41
                {
38 42
                    var tagDTO = mapper.Map<TagInfo>(tag);
39
                    var subTags = databaseContext.SubTags.Where(st => st.Tag == tag).ToList();
43
                    var tagSubTags = subTags.Where(st => st.Tag == tag).ToList();
40 44
                    var subTagDTOs = new List<SubTagInfo>();
41 45

  
42
                    if (subTags.Count() != 0)
46
                    if (tagSubTags.Count() != 0)
43 47
                    {
44
                        foreach (var subTag in subTags)
48
                        foreach (var subTag in tagSubTags)
45 49
                        {
46 50
                            subTagDTOs.Add(mapper.Map<SubTagInfo>(subTag));
47 51
                        }

Také k dispozici: Unified diff