En effet, toString() utilise le CultureInfo actuel ! Cela dépend de la culture si un double est séparé par une virgule ou un point.
Voir aussi ceci Question de débordement !
Si vous le déboguez, vous devriez voir que reader["Price"] renvoie un objet (type=Object{double}). La valeur ici est-elle correcte ? Je suppose que oui, alors faites simplement ce qui suit pour afficher la double valeur :
string display = double.Parse(reader["Price"], CultureInfo.InvariantCulture).ToSring(CultureInfo.CurrentCulture);
System.Diagnostics.Debug.WriteLine(display);