public async Task <bool> RemoveSong(int id) { using (var ctx = new MmDbContext()) { var item = ctx.Songs.FirstOrDefault(it => it.Id == id); if (item == null) { return(false); } var path = item.Path; // Даже если файлы уже дулаены вручную, удаляем запись из БД try { File.Delete(path); } finally { var del = ctx.Songs.FirstOrDefault(it => it.Id == id); ctx.Remove(del); await ctx.SaveChangesAsync().ConfigureAwait(false); } } return(true); }
public async Task <int> AddSong(string name, Stream file) { var filePath = generateFilePath(); try { using (var stream = new FileStream(filePath, FileMode.Create)) { file.Seek(0, SeekOrigin.Begin); file.CopyTo(stream); } } catch { return(-1); } using (var ctx = new MmDbContext()) { var song = new Song() { Name = name, Path = filePath }; ctx.Songs.Add(song); await ctx.SaveChangesAsync().ConfigureAwait(false); return(song.Id); } }