示例#1
0
        public void TestMethod_AlbumEF()
        {
            var album = new AlbumEF();

            album.ID   = 42;
            album.Name = "Prodigy";

            Assert.AreEqual(album.ID, 42);
            Assert.AreEqual(album.Name, "Prodigy");
        }
示例#2
0
        public async Task SearchMusic(string path)
        {
            var context = new BlogDBContext();

            var     file       = new FileInfo(path);
            TagFile tagLibFile = null;

            try {
                // Прочитаме музикалния файл.
                tagLibFile = TagFile.Create(path);
            } catch (Exception) {
                // Ако не можем да го прочетем отиваме на следващия.
                return;
            }
            using (tagLibFile) {
                BandEF  band  = null;
                Song    song  = null;
                AlbumEF album = null;
                var     tag   = tagLibFile.Tag;
                // Взимаме името на бандата.
                var bandName = tag.FirstAlbumArtist ?? tag.FirstPerformer ?? tag.FirstComposer ?? "Unknown";

                // Ако tag.Title е null взимаме името на файла.
                if (tag.Title is null)
                {
                    tag.Title = Path.GetFileNameWithoutExtension(file.Name);
                }
                //  Взимаме името на албума.
                var albumName = tag.Album ?? "Unknown";
                song = context.Songs.FirstOrDefault(s => s.Name == tag.Title);

                // Опитваме да видим дали има песен със същото име.
                // Ако има такава песен отиваме на следващата.
                if (song != null)
                {
                    return;
                }

                // Ако няма банда с това име, създаваме нова.
                band = context.Bands.FirstOrDefault(f => f.Name == bandName);
                if (band is null)
                {
                    band = new BandEF {
                        Name = bandName
                    };
                    MainViewModel.Collection.Bands.Add(new Band(bandName));
                    context.Bands.Add(band);
                }
                // Ако няма албум с това име, създаваме нов.
                album = context.Albums.FirstOrDefault(f => f.Name == albumName);
                if (album is null)
                {
                    album = new AlbumEF {
                        Name = albumName
                    };
                    MainViewModel.Collection.Albums.Add(new Album(albumName));
                    context.Albums.Add(album);
                }

                //Създаваме песента с нейната информация.
                song = new Song {
                    Name     = tag.Title,
                    Duration = tagLibFile.Properties.Duration,
                    Location = file.FullName,
                    Volume   = GetSongVolume(path)
                };
                MainViewModel.Collection.Songs.Add(song);

                // Добавяме песента към SQL базата данни.
                context.Songs.Add(song);
                // Запазваме песента.
                await context.SaveChangesAsync();

                // SQL създава ID на песента и я взимаме обратно.
                song = context.Songs.FirstOrDefault(f => f.Name == song.Name);
                // Добавяме албум с тази песен.
                context.AlbumsSongs.Add(new AlbumSongsEF {
                    AlbumID = context.Albums.FirstOrDefault(f => f.Name == albumName).ID,
                    SongID  = song.ID
                });
                // Добавяме банда с тази песен.
                context.BandsSongs.Add(new BandSongsEF {
                    BandID = context.Bands.FirstOrDefault(f => f.Name == bandName).ID,
                    SongID = song.ID
                });
                await context.SaveChangesAsync();
            }
        }