Пример #1
0
        private async Task AnimeToDatabase(Anime anime)
        {
            var animeDbo = new AnimeDbo();

            animeDbo.CopyBaseAndNavigationProperties(source: anime);

            database.Animes.Add(animeDbo);

            foreach (var genre in anime.Genres)
            {
                var genreDbo = await database.Genres.SingleOrDefaultAsync(g => g.Slug == genre.Slug);

                database.GenreMappings.Add(new GenreMapping {
                    Anime = animeDbo, Genre = genreDbo ?? genre
                });
            }

            foreach (var studio in anime.Studios)
            {
                var studioDbo = await database.Studios.SingleOrDefaultAsync(s => s.Slug == studio.Slug);

                database.StudioMappings.Add(new StudioMapping {
                    Anime = animeDbo, Studio = studioDbo ?? studio
                });
            }

            await database.SaveChangesAsync();
        }
Пример #2
0
        private async Task <Anime> DatabaseToAnime(AnimeDbo animeDbo)
        {
            var anime = new Anime();

            anime.CopyBaseProperties(source: animeDbo);

            anime.Genres = await database.GenreMappings.Where(m => m.AnimeId == anime.Id)
                           .Join(database.Genres, m => m.GenreId, g => g.Id, (m, g) => g).ToListAsync();

            anime.Studios = await database.StudioMappings.Where(m => m.AnimeId == anime.Id)
                            .Join(database.Studios, m => m.StudioId, s => s.Id, (m, s) => s).ToListAsync();

            anime.Titles = await database.Titles.Where(t => t.AnimeId == anime.Id).ToListAsync();

            anime.Episodes = await database.Episodes.Where(e => e.AnimeId == anime.Id)
                             .OrderBy(e => e.SeasonNumber).ThenBy(e => e.EpisodeNumber).ToListAsync();

            anime.Characters = await database.Characters.Where(c => c.AnimeId == anime.Id).ToListAsync();

            anime.StreamingLinks = await database.StreamingLinks.Where(l => l.AnimeId == anime.Id).ToListAsync();

            return(anime);
        }