//This is kinda dirty. Be interesting to time delete / recreate all versus, seek - update or insert. //TODO: Wrapp a stopwatch around this public void SaveLibrary(NavigatableCollection <Track> library) { //Delete the library first DeleteLibrary(); //TODO: Repopulate it DataTable dt = new DataTable(); using (var objConn = new SqlCeConnection(ConnectionString)) { objConn.Open(); var adapter = new SqlCeDataAdapter("Select Id, TrackName, TrackPathName, Artist, TrackNumber, Album From Track", objConn); var objCommandBuilder = new SqlCeCommandBuilder(adapter); adapter.Fill(dt); foreach (var track in library) { dt.Rows.Add(new object[] { track.Id, track.TrackName, track.TrackPathName, track.Artist, null, track.Album }); //We're not currently parsing the track number } adapter.Update(dt); objConn.Close(); } }
public NavigatableCollection <Track> FetchLibrary() { var ret = new NavigatableCollection <Track>(); using (var objConn = new SqlCeConnection(ConnectionString)) { var command = new SqlCeCommand("Select Id, TrackName, TrackPathName, Artist, TrackNumber, Album From Track Order By Artist, Album, TrackName", objConn); objConn.Open(); using (var reader = command.ExecuteReader(CommandBehavior.CloseConnection)) { ret = ReaderToTrackCollection(reader); } } return(ret); }
private NavigatableCollection <Track> ReaderToTrackCollection(SqlCeDataReader reader) { var coll = new NavigatableCollection <Track>(); while (reader.Read()) { var track = new Track { Id = (Guid)reader[0], TrackName = reader[1] == DBNull.Value ? "" : (string)reader[1], TrackPathName = reader[2] == DBNull.Value ? "" : (string)reader[2], Artist = reader[3] == DBNull.Value ? "" : (string)reader[3], Album = reader[5] == DBNull.Value ? "" : (string)reader[5], }; coll.Add(track); } return(coll); }