好吧,我正在使用OData v4和WebApi 2.2以及一些實體在座標系統4674中設置了DbGeometry屬性。 假設我們有一個簡單的實體,如下所示:
public class Aerodrome
{
public short Id { get; set; }
public string Name { get; set; }
public System.Data.Entity.Spatial.DbGeometry Location { get; set; }
}
和簡單ODataController如下:
public class AerodromeController : ODataController
{
private SqlDbContext Db
protected override void Initialize(HttpControllerContext controllerContext)
{
Db = new SqlDbContext();
base.Initialize(controllerContext);
}
[EnableQuery]
public IQueryable<Aerodrome> Get()
{
return Db.Aerodrome;
}
protected override void Dispose(bool disposing)
{
Store.Dispose();
base.Dispose(disposing);
}
}
}
而且WebApiConfig這樣設置
public static void Register(HttpConfiguration config)
{
ODataModelBuilder builder = new ODataConventionModelBuilder();
builder.EntitySet<Aerodrome>("Aerodrome");
config.MapODataServiceRoute("odata", null, builder.GetEdmModel());
}
現在,幾乎所有的東西都看起來不錯。我可以使用OData查詢,如主機/機場?$ filter = startswith(Name,'Flor')「)或host/Aerodrome?$ top = 20 & $ skip = 60」我得到了預期的結果集。
但是,我只是可以使過濾器工作sith geo。*過濾器。 ?
主機/機場$過濾= geo.distance(定位點,(-72.768952 -7.599057))LT 900.0
它返回錯誤如下:
"error":{
"code":"","message":"The query specified in the URI is not valid. ')' or ',' expected at position 59 in 'geo.distance(Localizacao,geography, Point(-122.03547668457 47.6316604614258)) lt 900'.","innererror":{
"message":"')' or ',' expected at position 59 in 'geo.distance(Localizacao,geography, Point(-122.03547668457 47.6316604614258)) lt 900'.","type":"Microsoft.OData.Core.ODataException","stacktrace":" em Microsoft.OData.Core.UriParser.Parsers.FunctionCallParser.ParseArgumentList()\r\n
有人可以啓發我」米做錯了嗎?
它看起來像是抱怨在點的值之間的空間,或許它需要一個逗號或其他什麼東西? – DavidG 2014-09-26 12:19:45