Może występować niezgodność wersji w zestawie typów. Był to znany problem między wersjami 10 i 11. Niestety komunikat o błędzie nie zawiera informacji o wersji, dlatego wygląda to na nonsens!
Aby to obejść, możesz zdeserializować binarną reprezentację typu, czyli coś takiego (jeśli Twoja kolumna geograficzna jest pierwszą w zestawie wyników):
var geo = SqlGeography.Deserialize(reader.GetSqlBytes(0));
Istnieją inne rozwiązania, w tym wykonanie przekierowania wiązania dla zestawu.
Więcej informacji tutaj:https://connect.microsoft.com/SQLServer/feedback/details/685654/invalidcastexception-retrieving-sqlgeography-column-in-ado-net-data-reader