这可能是远景,我想我已经有了答案,但是我想知道是否有人以不同的方式解决了这个问题。使用实体框架btw。
好的,我从数据库中获取地图(边界)的多边形,并希望直接减少调用中的点数。太棒了,SqlServer实际上有空间功能" Reduce"内置。
这是我的代码:
Sub ToggleChevron3_Click()
Application.ScreenUpdating = False
Dim bToggle As Boolean
bToggle = ActiveSheet.AutoFilterMode
If bToggle Then
ActiveSheet.AutoFilterMode = False
Else
Dim rng As Range
Set rng = Range("A1:E100") 'used E because you had an offset of 4 columns
With rng
.AutoFilter 5, "<>"
.AutoFilter 1, "<>"
End With
End If
Application.ScreenUpdating = True
End Sub
很好,一切都很好,直到它真正达到减少功能。 mehmehmehm:它抛出了一个不受支持的异常。
嗯,我深入挖掘了一下,实际上遇到了这个参考:
看起来它甚至没有实现:
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();
现在我的问题是,是否有人知道如何使用实体框架在原始SQL中执行此语句?
我认为目前还没有其他选择,或者在那里?
答案 0 :(得分:0)
有数据库实例作为DbContext的属性。您可以使用Database类的SqlQuery方法来发出原始SQL。
例如
var directQuery = context.Database.SqlQuery<Spatial_Zip>(sql, new object[] { }).ToList();
请查看www.asp.net了解详情。