Вот обходной путь, чтобы заставить его работать в Entity Framework / LINQ to Entities:
Вы можете использовать представление базы данных, чтобы вернуть Well-Known-Text (используя "geometry.ToString ()" в запросе) или Binary. Затем, как только получающиеся строки будут возвращены, просто преобразуйте строку / двоичный файл в объект SqlGeometry в .NET.
Вот пример запроса, использованного для построения представления, которое преобразует поле типа «География» типа геометрии в хорошо известную текстовую строку:
SELECT ID, Name, Location.ToString() as Location FROM MyTable
Вот пример запроса к полученным объектам, которые имеют поле «Местоположение», которое содержит представление «Хорошо известный текст» или «Строка» объекта «география»:
var e = new MyApp.Data.MyDataEntities(connectionString);
var items = from i in e.MyTables
select i;
foreach (var i in items)
{
// "Location" is the geography field
var l = SqlGeography.Parse(i.Location);
var lat = l.Lat;
var lng = l.Long;
}
Еще одна вещь: вам нужно будет выполнять любые пространственные запросы внутри хранимых процедур, поскольку вы не хотите извлекать ВСЕ данные из таблицы в .NET, чтобы выполнить свой собственный пространственный запрос с использованием LINQ.
Это не совсем то, что изначально поддерживает пространственные типы SQL, но позволяет одновременно работать с Entity Framework и SQL Spatial.