.NET 4.6/Entity Framework: бросок пространственных функций не поддерживается

Это может быть далеко, и я думаю, что у меня уже есть ответ, однако я хочу посмотреть, решил ли кто-то это по-другому. Кстати, используя Entity Framework.

Хорошо, я получаю полигоны из базы данных для карты (границы) и хочу уменьшить количество точек прямо в вызове. Отлично, SqlServer на самом деле имеет встроенную пространственную функцию «Уменьшить».

Вот мой код:

data = (from c in context.Spatial_Zips
    where zips.Contains(c.regionname)
    select new Spatial_Zip() {
        ID = c.ID,
        regionname = c.regionname,
        pcnameimp = c.pcnameimp,
        geog = SqlSpatialFunctions.Reduce(c.geog, 100)
    }).ToList();

Отлично, работает все хорошо, пока не наткнется на функцию сокращения. mehmehmehm: Выдает исключение Unsupported.

Ну, я копнул немного глубже и наткнулся на эту ссылку:

http://referencesource.microsoft.com/#System.Data.Entity/System/Data/Objects/SqlClient/SqlSpatialFunctions.cs

Похоже, это даже не реализовано:

/// <summary>
        /// Proxy for the function SqlServer.REDUCE
        /// </summary>
        [EdmFunction("SqlServer", "REDUCE")]
        public static System.Data.Spatial.DbGeography Reduce(System.Data.Spatial.DbGeography geographyValue, System.Double? tolerance)
        {
            throw EntityUtil.NotSupported(System.Data.Entity.Strings.ELinq_EdmFunctionDirectCall);
        }

Теперь мой вопрос: кто-нибудь знает, как выполнить этот оператор в необработанном SQL с использованием Entity Framework?

Я не думаю, что есть какой-либо другой вариант на данный момент, или есть?


person flyandi    schedule 01.09.2015    source источник


Ответы (1)


arrow_upward
0
arrow_downward

Существует экземпляр базы данных как свойство DbContext. Вы можете использовать метод SqlQuery класса базы данных для выдачи необработанного SQL.

Например

var directQuery = context.Database.SqlQuery<Spatial_Zip>(sql, new object[] { }).ToList();

Взгляните на www.asp.net для получения дополнительной информации.

person Zeljko Vujaklija    schedule 02.09.2015