Поддержка пространственных типов данных в Linq2Sql или EF4

Кто-нибудь знает (в идеале, со ссылкой), будет ли версия VS2010 LinqToSQL или EntityFramework v4 поддерживать запросы к пространственным типам данных SQL 2008?

Ответы на вопрос(3)

и и получить пространственные типы SQL напрямую. Я проверил следующее на примере БД (не забывайте включать ссылку и «использование» в System.SqlServer.Types

...

string connectionString = @"Data Source=YADDAYADDA;Initial Catalog=MUMBLEMUMBLE;Integrated Security=True";
var pointsFileDc = new PointsFileDC(connectionString);
var geos = (from point in pointsFileDc.pointsData
            select point).Take(10);
foreach (var geo in geos)
{
    ObjectDumper.Write(geo);
}

...

public class PointsFileDC : DataContext
{
    public Table<GeoPoints> pointsData;
    public PointsFileDC(string connection)
        : base(connection)
    {
    }
}

[Table(Name = "Points")]
public class GeoPoints
{
    [Column(IsPrimaryKey = true)]
    public int PointId;
    [Column]
    public SqlGeography GeoPoint;
}

чтобы заставить его работать в 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.

 Pure.Krome01 дек. 2009 г., 00:13
Это было то, что я играл / делал, с L2S.
 Colin Desmond25 нояб. 2009 г., 19:03
Отлично, большое спасибо, Крис. Я посмотрю на это!
 Peter Wone04 февр. 2010 г., 08:57
Мы храним этот материал как плавающие столбцы Lat / Lng и используем триггеры для создания значения столбца geography. Это позволяет нам использовать оба способа - типы, тривиальные для получения / установки, и пространственные запросы в SP.
Решение Вопроса

пользовательские функции и притворяться, что пространственные типы - это действительно двоичные типы. Это то, что я думаю об осмотре, попытках и добавлении кмоя серия советов, Но до сих пор даже взломать не доказано. :(

Что касается прямой поддержки, к сожалению, ни L2S, ни EF v4 не будут поддерживать пространственные типы на таймфрейме VS2010.

Алекс Джеймс

Менеджер программ Entity Framework.

 Alex James24 авг. 2009 г., 00:33
Ну, я не собираюсь говорить слишком низкий приоритет. Я считаю это высоким приоритетом. Но я скажу, что это было не так высоко, как некоторые из вещей, которые мы в итоге сделали, такие как POCO, FKs, Model First и т. Д.
 Chris Pietschmann02 июн. 2010 г., 03:50
Когда EF получит поддержку пространственного типа ?? VS'2012; только через 4 года после их добавления в SQL Server ??
 Colin Desmond23 авг. 2009 г., 23:28
Спасибо, Алекс, похоже, надежный и окончательный ответ! Есть ли какая-то особая причина, по которой EF4 не будет их поддерживать (слишком сложно, недостаточно спроса, слишком низкий приоритет ...?)
 runxc1 Bret Ferrier12 июн. 2012 г., 18:37
Как примечание, EF 5 имеет поддержку типов данных Spacial. Однако не уверен, работает ли это с MySQL или другими поставщиками БД.

Ваш ответ на вопрос