Entity Framework 6 和地理数据 STContains

Entity Framework 6 and Geography data STContains

我已经包含 Microsoft.SqlServer.Types 以启用 Entity Framework 中的地理和几何类型,但我没有看到任何等同于 STContains() 的函数。

我需要进行查询以检索包含点的地理位置

在SQL中我是这样写的:

SELECT adm1code, adm1name 
FROM Adm2GeoBoundaries
WHERE Coords.STContains(geography::Parse('POINT(-121.703796 46.893985)'));

在 LINQ 中我希望有类似

的东西
using (GeoEntities db = new GeoEntities ())
{
    DbGeography location = DbGeography.FromText("POINT(-121.703796 46.893985)");
    var admin = from a in db.Adm2GeoBoundaries
                where a.Coords.STContains(location)
                select a;
}

但是 a.Coords.STContains(location) 抛出错误

STContains method doesn't exist

根据 EF6 Source Code 的源代码,STContains 似乎在 EF6 中实现为 Contains。

https://github.com/aspnet/EntityFramework6/blob/master/src/EntityFramework.SqlServer/SqlSpatialServices.cs

查看 SqlTypesAssembly.cs 您应该能够看到它应该调用 STContains 方法。