簡體   English   中英

如何在Linq中使用DbGeography.Filter和Entity Framework 5?

[英]How to use DbGeography.Filter in Linq with Entity Framework 5?

使用Entity Framework 5,可以在Linq查詢中使用SQL Server Spatial過程。

例如,使用DbGeography對象,您可以使用“Buffer()”方法,該方法將轉換為SQL Server中的STBuffer。 同樣,Intersects()將轉換為STIntersects。

這是一個有效的示例查詢:

  var point = DbGeography.FromText(string.Format("POINT({1} {0})", latitude, longitude), 4326);
  var query = from person in persons
              let region = point.Buffer(radius)
              where person.Location.Intersects(region)
              select person;

我想使用過濾器的可能性(因為這可以加快您的查詢,如果准確性不是您主要關注的問題,請參閱: http//www.pauldmendoza.com/post/SQL-Server-Filter-vs-STInterects。 aspx )但是,我似乎無法在EF5中找到如何做到這一點。 這可能嗎? 如果是的話:怎么樣?

我正在使用SQL Server 2008 R2。

問這個問題有點太早了。 我發現了這個: http//msdn.microsoft.com/en-us/library/hh673622(v = vs1010).aspx

這可以像這樣使用:

  var point = DbGeography.FromText(string.Format("POINT({1} {0})", latitude, longitude), 4326);
  var query = from person in persons
              let region = point.Buffer(radius)
              where SqlSpatialFunctions.Filter(person.Location, region) == true
              select person; 

這轉換為我想要的查詢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM