我正在尝试计算用户当前点与数据库中另一个点的距离。我编写了以下代码,但出现了
function st_x(geography) does not exist
错误。
var points = pointsQueryable.Paging(pager).Select(x => new PointViewModel
{
Id = x.Id,
Title = x.Title,
Address = x.Address,
Description = x.Description,
Longitude = x.Location.X,
Latitude = x.Location.Y,
Image = x.Image,
DistanceFromUser = x.Location.Distance(new Point(filter.UserLongitude, filter.UserLatitude)),
});
当然,我已经使用
CREATE EXTENSION postgis;
命令为数据库启用了 postgis。
我使用以下代码示例在类似项目上测试了给定的场景,它有效:
var firstPoint = new Point(10, 20);
var fooPoint = await _fooRepository.FirstOrDefaultAsync(p=>p.Geom.Distance(firstPoint) > 5);
var distance = fooPoint.Geom.Distance(firstPoint);
但在我的例子中,实体的 Geom 字段被定义为“Geometry”。 您能否也提供您的实体类,以便问题更清楚。
如果在项目中使用 NetTopologySuit,以下配置可能会有所帮助。
var builder = new DbContextOptionsBuilder<FooDbContext>()
.UseNpgsql(configuration.GetConnectionString("Default"),
opts => { opts.UseNetTopologySuite(); });