Это может быть далеко, и я думаю, что у меня уже есть ответ, однако я хочу посмотреть, решил ли кто-то это по-другому. Кстати, используя 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.
Ну, я копнул немного глубже и наткнулся на эту ссылку:
Похоже, это даже не реализовано:
/// <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?
Я не думаю, что есть какой-либо другой вариант на данный момент, или есть?