Entity Framework 6 и географические данные STContains - PullRequest
0 голосов
/ 12 июня 2019

Я включил 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 не существует

1 Ответ

0 голосов
/ 17 июня 2019

Согласно исходному коду для EF6 Исходный код , STContains, по-видимому, реализовано как Содержит в EF6.

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

enter image description here

Глядя на SqlTypesAssembly.cs, вы должны увидеть, что он должен вызывать метод STContains.

enter image description here

...