bar*_*oma 8 c# gis entity-framework geospatial
实体框架上下文正在为我生成查询.
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());
Run Code Online (Sandbox Code Playgroud)
这将输出以下字符串:
SELECT
[Extent1].[CityID] AS [CityID],
[Extent1].[geom] AS [geom],
[Extent1].[Name] AS [Name],
FROM [dbo].[Cities] AS [Extent1]
WHERE 3 = [Extent1].[CityID]
Run Code Online (Sandbox Code Playgroud)
我的表包括名为geometry的空间列.实体框架不包含几何函数.例如,这是一个几何函数:
SELECT ST_AREA(geom) FROM Cities WHERE CityID = 3
Run Code Online (Sandbox Code Playgroud)
所以我不能像这样使用上下文扩展方法:
context.Cities.Where(....)
Run Code Online (Sandbox Code Playgroud)
是可能的,还是有任何实体框架方法来覆盖几何函数.
您不需要覆盖任何内容。最好的选择是通过实体框架执行简单的 SQL 查询并让它返回填充的对象。
// Add in whatever spatial stuff you need here.
var sql = "SELECT * FROM Cities WHERE CityId = {0} AND ...";
// Add whatever other parameters you need to the rest of the parameters.
var cities = context.Database.SqlQuery<City>(sql, cityId, ...);
Run Code Online (Sandbox Code Playgroud)
它不像使用 LINQ 那样“干净”,但我想他们还没有这样做的原因是实现打包到 EF 中的 LINQ to Entities 解决方案的后勤工作。您可以尝试这样做,但有一个更简单的解决方案。
| 归档时间: |
|
| 查看次数: |
2212 次 |
| 最近记录: |