![](/img/trans.png)
[英]Is Newtonsoft.JSON supported for .net Framework 4.6 in Xamarin.Android?
[英].NET 4.6 / Entity Framework : Spatial functions throw not supported
这可能是一个长镜头,我想我已经找到了答案,但是我想看看是否有人以不同的方式解决了这个问题。 使用实体框架顺便说一句。
好的,我正在从数据库中获取地图的多边形(边界),并希望直接减少通话中的点数。 很好,SqlServer实际上具有内置的空间功能“ Reduce”。
这是我的代码:
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();
太好了,一切正常,直到它真正达到了reduce函数。 mehmehmehm:引发不支持的异常。
好吧,我深入研究了一下,实际上遇到了这个参考资料:
看起来甚至没有实现:
/// <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中执行此语句?
我认为目前没有其他选择,还是存在?
数据库实例是DbContext的属性。 您可以使用Database类的SqlQuery方法发出原始SQL。
例如
var directQuery = context.Database.SqlQuery<Spatial_Zip>(sql, new object[] { }).ToList();
请访问www.asp.net了解更多信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.