public static void SaveStatesToDatabase(List <SpotifyState> SpotifyStates, WorkTableState oWorkTableState)
        {
            DataTable dtArtists = new DataTable();

            dtArtists.Columns.Add(new DataColumn("UserID", typeof(long)));
            dtArtists.Columns.Add(new DataColumn("PlaylistID", typeof(long)));
            dtArtists.Columns.Add(new DataColumn("TrackID", typeof(long)));
            dtArtists.Columns.Add(new DataColumn("Position", typeof(long)));
            dtArtists.Columns.Add(new DataColumn("ArtistID", typeof(long)));

            foreach (SpotifyState oSpotifyState in SpotifyStates)
            {
                DataRow drArtist = dtArtists.NewRow();
                drArtist["UserID"]     = oSpotifyState.UserID;
                drArtist["PlaylistID"] = oSpotifyState.PlaylistID;
                drArtist["TrackID"]    = oSpotifyState.TrackID;
                drArtist["Position"]   = oSpotifyState.Position;
                drArtist["ArtistID"]   = oSpotifyState.ArtistID;
                dtArtists.Rows.Add(drArtist);
            }
            SqlBulkCopyColumnMapping cmUserID     = new SqlBulkCopyColumnMapping("UserID", "UserID");
            SqlBulkCopyColumnMapping cmPlaylistID = new SqlBulkCopyColumnMapping("PlaylistID", "PlaylistID");
            SqlBulkCopyColumnMapping cmTrackID    = new SqlBulkCopyColumnMapping("TrackID", "TrackID");
            SqlBulkCopyColumnMapping cmPosition   = new SqlBulkCopyColumnMapping("Position", "Position");
            SqlBulkCopyColumnMapping cmArtistID   = new SqlBulkCopyColumnMapping("ArtistID", "ArtistID");


            RelationalDatabase.BulkInsert(dtArtists, oWorkTableState, cmUserID, cmPlaylistID, cmTrackID, cmPosition, cmArtistID);
            RelationalDatabase.ExecuteNonQuery("UpsertSpotifyState", CommandType.StoredProcedure);
        }
        public static void SavePlaylistsToDatabase(Dictionary <Int64, SpotifyPlaylist> Playlists, WorkTableState oWorkTableState)
        {
            DataTable dtArtists = new DataTable();

            dtArtists.Columns.Add(new DataColumn("PlaylistID", typeof(long)));
            dtArtists.Columns.Add(new DataColumn("Name", typeof(string)));
            dtArtists.Columns.Add(new DataColumn("SpotifyID", typeof(string)));
            dtArtists.Columns.Add(new DataColumn("PlaylistOwner", typeof(string)));

            foreach (KeyValuePair <long, SpotifyPlaylist> oKVP in Playlists)
            {
                DataRow drArtist = dtArtists.NewRow();
                drArtist["PlaylistID"]    = oKVP.Key;
                drArtist["Name"]          = oKVP.Value.Name;
                drArtist["SpotifyID"]     = oKVP.Value.SpotifyID;
                drArtist["PlaylistOwner"] = oKVP.Value.Owner;
                dtArtists.Rows.Add(drArtist);
            }
            SqlBulkCopyColumnMapping cmID            = new SqlBulkCopyColumnMapping("PlaylistID", "PlaylistID");
            SqlBulkCopyColumnMapping cmName          = new SqlBulkCopyColumnMapping("Name", "Name");
            SqlBulkCopyColumnMapping cmSpotifyID     = new SqlBulkCopyColumnMapping("SpotifyID", "SpotifyID");
            SqlBulkCopyColumnMapping cmPlaylistOwner = new SqlBulkCopyColumnMapping("PlaylistOwner", "PlaylistOwner");

            RelationalDatabase.BulkInsert(dtArtists, oWorkTableState, cmID, cmName, cmSpotifyID, cmPlaylistOwner);
            RelationalDatabase.ExecuteNonQuery("AddSpotifyPlaylists", CommandType.StoredProcedure);
        }