¡Esto se debe a que toString() usa la información cultural actual! Depende de la cultura si un doble está separado por una coma o un punto.
Ver también esto ¡Pregunta de desbordamiento de pila!
Si lo depura, debería ver que el lector ["Precio"] está devolviendo un Objeto (tipo =Objeto {doble}). ¿Aquí está el valor correcto? Supongo que lo es, así que haz lo siguiente para mostrar el valor doble:
string display = double.Parse(reader["Price"], CultureInfo.InvariantCulture).ToSring(CultureInfo.CurrentCulture);
System.Diagnostics.Debug.WriteLine(display);