Entity framework 实体SQL中的空间支持

Entity framework 实体SQL中的空间支持,entity-framework,entity-framework-5,spatial,entity-sql,Entity Framework,Entity Framework 5,Spatial,Entity Sql,我正在生成实体SQL以在我的应用程序中提供动态查询支持。然而,我无法找到如何使用EntityFramework 5在实体SQL中指定空间条件 使用Linq to实体对实体包含空间字段的模型进行查询,如: var a = new Model1Container(); var b = from c in a.Entity1 where c.Loc.Intersects(System.Data.Spatial.DbGeography.FromText("POINT (43 -73)")

我正在生成实体SQL以在我的应用程序中提供动态查询支持。然而,我无法找到如何使用EntityFramework 5在实体SQL中指定空间条件

使用Linq to实体对实体包含空间字段的模型进行查询,如:

var a = new Model1Container();
var b = from c in a.Entity1
        where c.Loc.Intersects(System.Data.Spatial.DbGeography.FromText("POINT (43 -73)"))
        select c;
生成SQL Server 2012所需的SQL,例如:

SELECT 
[Extent1].[Id] AS [Id], 
[Extent1].[Loc] AS [Loc]
FROM [dbo].[Entity1] AS [Extent1]
WHERE ([Extent1].[Loc].STIntersects(geography::Parse(N'POINT (43 -73)'))) = 1

如何使用ESQL重写上述Linq到实体查询?或者这是不可能的?

我们有一组规范函数,可以在EntitySQL中使用这些函数来处理空间类型,包括从已知文本构造实例。例如,这是构造点的有效EntitySQL:

var a = new YourDbContext();
var b = a.Entity1.Where(c=>c.Loc.Intersects(System.Data.Spatial.DbGeography.FromText("POINT (43 -73)"));
GeometryFromText('POINT (43 -73)')

完整的空间规范函数集在SpatialedFunctions类中声明,但该类用于以编程方式创建DbExpression树,因此该类可用的参考文档的格式不适合EntitySQL使用。我将与我们的文档团队跟进,看看是否有更好的资源可用,或者我们是否需要将这些资源添加到EntitySQL文档中。

我很抱歉回答得太晚,但我现在才能够深入研究处理此问题的代码。我能够从CodePlex中提取EF的源代码并检查您提到的类。我在那里找到了我的应用程序所需的所有功能,谢谢!如果这些功能都有文档记录,那就太棒了。在我的例子中,我正在构建一个动态查询编译器,该编译器将一个分层数据结构转换为E-SQL,我让我的用户操作该数据结构。因此,能够在文档中查看我在E-SQL中可用的所有内容将是非常好的。文档目前已找到,这非常好。感谢您的回答,尽管其想法是手动在实体SQL中编写该查询的等价物,而不是通过LINQ表达式。