¿Es posible usar SqlGeography con Linq to Sql?

He tenido bastantes problemas tratando de usarMicrosoft.SqlServer.Types.SqlGeography. Sé muy bien que el soporte para esto en Linq to Sql no es excelente. He intentado numerosas formas, comenzando con la forma esperada (tipo de base de datos degeography, Tipo CLR deSqlGeography) Esto produce elNotSupportedException, que se discute ampliamente a través de los blogs.

Luego he seguido el camino de tratar elgeography columna comovarbinary(max), comogeography es un UDT almacenado como binario. Esto parece funcionar bien (con algunos métodos binarios de extensión de lectura y escritura).

Sin embargo, ahora me encuentro con un problema bastante oscuro, que no parece haberle sucedido a muchas otras personas.

System.InvalidCastException: no se puede convertir el objeto de tipo 'Microsoft.SqlServer.Types.SqlGeography' para escribir 'System.Byte []'.

Este error se produce desde unObjectMaterializer al iterar a través de una consulta. Parece ocurrir solo cuando las tablas que contienen columnas de geografía se incluyen implícitamente en una consulta (es decir, usando elEntityRef<> propiedades para hacer uniones).

System.Data.Linq.SqlClient.ObjectReaderCompiler.ObjectReader`2.MoveNext ()

Mi pregunta: si estoy recuperando elgeography columna comovarbinary(max), Podría esperar el error inverso: no se puede emitirbyte[] aSqlGeography. Eso lo entendería. Esto no lo hago. Tengo algunas propiedades en las clases parciales de LINQ to SQL que ocultan la conversión binaria ... ¿podría ser ese el problema?

Cualquier ayuda apreciada, y sé que probablemente no hay suficiente información.

Extras:

A geography columna en Visual Studio dbml Designer con 'Tipo de datos del servidor' =geography genera este error:The specified type 'geography' is not a valid provider type.A geography La columna en Visual Studio dbml Designer sin 'Tipo de datos del servidor' genera este error:Could not format node 'Value' for execution as SQL.

Respuestas a la pregunta(2)

Su respuesta a la pregunta