[英]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.