首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DbGeography相交

DbGeography相交
EN

Stack Overflow用户
提问于 2018-03-22 19:15:57
回答 1查看 228关注 0票数 0

我使用DbGeographyEntity Framework 6使用这个模型:

代码语言:javascript
复制
public class County
{
    public int Id { get; set; }

    public string Name { get; set; }

    public string Code { get; set; }

    public DbGeography Area { get; set; }

}

然后,我尝试执行Intersects方法,如下所示:

代码语言:javascript
复制
public County GetCurrentCounty(double latitude, double longitude)
{  
    var point = DbGeography.PointFromText(
        "POINT("
        + longitude.ToString(CultureInfo.InvariantCulture) + " "
        + latitude.ToString(CultureInfo.InvariantCulture) + ")",
        4326);

    var area = db.Counties.FirstOrDefault(x =>
        point.Intersects(x.Area));


    var area1 = db.Counties.FirstOrDefault(x =>
        x.Area.Intersects(point));
}

但是,为这两个方法创建的查询看起来都是这样的。我是否可以不选择整个表并在数据库中执行查询呢?

代码语言:javascript
复制
SELECT 
    [Extent1].[Id] AS [Id], 
    [Extent1].[Name] AS [Name], 
    [Extent1].[Code] AS [Code], 
    [Extent1].[Area] AS [Area]
    FROM [Election].[County] AS [Extent1]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-18 13:05:06

不能说错误是什么,而是第二次显示正确的值。实体框架生成的T:

代码语言:javascript
复制
SELECT TOP (1) 
[Extent1].[Id] AS [Id], 
[Extent1].[Name] AS [Name], 
[Extent1].[Code] AS [Code], 
[Extent1].[Area] AS [Area]
FROM [Election].[County] AS [Extent1]
WHERE ([Extent1].[Area].STIntersects(@p__linq__0)) = 1


-- p__linq__0: 'POINT (10.0000000 32.0000000)' (Type = Object)

可以像这样手动测试:

代码语言:javascript
复制
declare @p__linq__0 varchar(max)
set @p__linq__0 = 'POINT (10.0000000 32.0000000)' 

SELECT TOP (1) 
    [Extent1].[Id] AS [Id], 
    [Extent1].[Name] AS [Name], 
    [Extent1].[Code] AS [Code], 
    [Extent1].[Area] AS [Area]
    FROM [Election].[County] AS [Extent1]
    WHERE ([Extent1].[Area].STIntersects(@p__linq__0)) = 1

更多信息可以在这里找到:

https://learn.microsoft.com/en-us/sql/t-sql/spatial-geometry/stintersects-geometry-data-type

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49436731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档