Sql server 实体框架6.1在空间查询中返回null(使用MsSQL)
我正在编写一个MVC应用程序,其中包含实体框架、空间数据和映射建筑的MsSQL 2012。我想要达到的目标相当简单 此人在地图上单击building并获取building的详细信息 因此,我编写了以下函数Sql server 实体框架6.1在空间查询中返回null(使用MsSQL),sql-server,entity-framework,spatial,Sql Server,Entity Framework,Spatial,我正在编写一个MVC应用程序,其中包含实体框架、空间数据和映射建筑的MsSQL 2012。我想要达到的目标相当简单 此人在地图上单击building并获取building的详细信息 因此,我编写了以下函数 public BuildingPart GetByPoint(double x, double y) { DbGeometry point = DbGeometry.PointFromText("POINT(" + x + " " + y + ")", 2100);
public BuildingPart GetByPoint(double x, double y)
{
DbGeometry point = DbGeometry.PointFromText("POINT(" + x + " " + y + ")", 2100);
BuildingPart result = _context.BuildingPart
.Where(a => a.BuildingPartPolygonGeometry.geometry.Intersects(point))
.Include(a => a.Storey)
.Include(a => a.RoofSurface.Select(c => c.RoofSurfacePolygon)).SingleOrDefault();
return result;
}
问题是,尽管此函数在应用程序中始终返回null,但无论用户单击何处。如果我接受此函数生成的查询并在MSSQL Management studio上执行,则查询将返回结果
任何其他在其主体中没有空间查询的函数…都可以工作
我尝试了很多方法,其中包括将Microsoft.SqlServer.Types.dll放在项目中,将SqlServerSpatial.dll和SqlServerSpatial110.dll放在bin文件夹中
事实上,我没有得到一个特定的错误是什么担心我。如果有人能给我们一点启示,我们将不胜感激
提前感谢它是返回Management Studio中的结果还是一个结果。由于SingleOrDefault的原因,两行代码将为空。由于某些奇怪的原因,它确实会返回2个结果,但仍然将函数更改为返回列表,或者删除随后返回单个结果的Include并没有解决问题。我仍然得到空值。你能发布BuildingPartPolygongGeometry和BuildingPart类或至少它们的相关子集吗?你说如果我接受这个函数生成的查询,你是如何得到该查询的?您是从代码中检查它,使用sql探查器,还是根据查询的行为构建查询?FWIW sql分析器将是我的首选方法。@Madullah我正在使用HR实体框架分析器