gpt4 book ai didi

c# - 我可以覆盖 Entity Framework 查询生成器吗?

转载 作者:太空狗 更新时间:2023-10-29 19:45:17 24 4
gpt4 key购买 nike

Entity Framework 上下文正在为我生成查询。

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]

我的表格包含名为几何的空间列。 Entity Framework 不包含几何函数。例如,这是一个几何函数:

SELECT ST_AREA(geom) FROM Cities WHERE CityID = 3

所以我不能像这样使用上下文扩展方法:

context.Cities.Where(....)

可以,或者有没有 Entity Framework 的方法可以覆盖几何函数。

最佳答案

您不需要覆盖任何内容。您最好的选择是通过 Entity Framework 执行一个普通的 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, ...);

它不像使用 LINQ 那样“干净”,但我认为实现打包到 EF 中的 LINQ to Entities 解决方案的后勤工作是他们尚未这样做的原因。您可以尝试这样做,但有一个更简单的解决方案。

关于c# - 我可以覆盖 Entity Framework 查询生成器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28765692/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com