2011-06-10 128 views
1

我有lat和長的SQL數據庫作爲「浮動」C#LINQ SqlGeography - 找到緯度和經度

我想下面的地方緯度& LNG儲存在50m以內的位置是C#雙

var yourLocation = SqlGeography.Point(lat, lng, 4326); 
MyConn conn = new MyConn(); 
var query = from p in conn.Locations 
      let distance = SqlGeography 
      .Point(p.Latitude, p.Longitude, 4326) 
      .STDistance(yourLocation) 
      .Value 
      where distance <= 50 
select p; 
return query.Distinct().ToList(); 

我得到的是下面的錯誤

LINQ到實體無法識別方法「System.Data.SqlTypes.SqlDouble STDistance(Microsoft.SqlServer.Types.SqlGeography)」的方法,而且這種方法不能被翻譯成商店表達。

對此有何看法?

回答

0

看看this thread。我不知道EF4有任何改正,但這並不意味着他們沒有改正它。

還有一個關於實體框架行爲與空間類型的article here

希望幫助

0

爲時已晚來回答這個問題,但對社會的幫助。發生此問題的原因是Microsoft.SqlServer.Types未在您的項目中引用。只需右鍵單擊引用並選擇添加引用對話框將出現選擇程序集選項卡並搜索此程序集並選擇。問題解決了。