Dzieje się tak, ponieważ funkcja toString() używa bieżącego CultureInfo! To zależy od kultury, czy double jest oddzielone przecinkiem lub kropką.
Zobacz też to Pytanie Stackoverflow!
Jeśli go debugujesz, powinieneś zobaczyć, że czytnik["Cena"] zwraca obiekt (typ=Object{double}). Czy tutaj wartość jest prawidłowa? Myślę, że tak, więc po prostu wykonaj następujące czynności, aby wyświetlić podwójną wartość:
string display = double.Parse(reader["Price"], CultureInfo.InvariantCulture).ToSring(CultureInfo.CurrentCulture);
System.Diagnostics.Debug.WriteLine(display);