【发布时间】:2015-02-27 12:56:59
【问题描述】:
实体框架上下文正在为我生成查询。
var query = from c in context.Cities where c.CityID == 3 select c;
var objectQuery=query as System.Data.Objects.ObjectQuery;
Console.WriteLine(objectQuery.ToTraceString());
这会输出以下字符串:
SELECT
[Extent1].[CityID] AS [CityID],
[Extent1].[geom] AS [geom],
[Extent1].[Name] AS [Name],
FROM [dbo].[Cities] AS [Extent1]
WHERE 3 = [Extent1].[CityID]
我的表包括名为几何的空间列。实体框架不包含几何函数。例如这是一个几何函数:
SELECT ST_AREA(geom) FROM Cities WHERE CityID = 3
所以我不能像这样使用上下文扩展方法:
context.Cities.Where(....)
可以吗,或者有没有实体框架方法可以覆盖几何函数。
【问题讨论】:
-
我自己不熟悉实现这个,但我相信您应该考虑创建自己的 LINQ 提供程序:msdn.microsoft.com/en-us/library/vstudio/…
-
您使用的是哪个 EF 版本? EF 确实支持空间对象,例如参见 weblog.west-wind.com/posts/2012/Jun/21/…
标签: c# entity-framework gis geospatial