在 Entity Framework Select 中使用 SQL 函数

发布于 2024-10-10 18:33:07 字数 352 浏览 1 评论 0原文

我正在使用 PostgreSQL 的 Devart EF-4 提供程序。

在我的一个数据库表中,我有一个名为 the_geom 的列,它是一个包含多边形的 PostGis 几何类型列。长话短说,PostGis 使用自己的二进制格式来存储几何值,因此为了使其可以在我的应用程序中使用,我需要将其转换为众所周知的二进制 (WKB),这是几何的标准化二进制表示形式。在标准 SQL 中,通过选择 with 可以很容易地实现这一点

select asbinary(the_geom) from mytable

。最后一个问题是: 在实体框架中,如何指定使用 asbinary() 函数来选择 the_geom 列?

I am using the Devart EF-4 provider for PostgreSQL.

In one of my db tables, I have a column called the_geom which is a PostGis Geometry type column holding a polygon. Long story short, PostGis uses its own binary format to store geometry values, so for it to be usable in my application i need to convert it to Well-Known-Binary (WKB) which is a standardized binary representation of geometry. This can be achieved quite easy in standard SQL by selecting in with

select asbinary(the_geom) from mytable

The final question is this:
How do I, in Entity Framework, specify to use the asbinary() function to select the_geom column?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

口干舌燥 2024-10-17 18:33:07

您可以在 System.Data.Objects.SqlClient 命名空间中的 SqlFunctions 类中的 Linq 查询中使用大量 Sql Server 函数。

在 Postgre 的 Linq 提供程序库中查找类似内容,如果找不到,请添加一个值为 asbinary(the_geom) 的计算列,并将该列映射到 EF 中。

如果你看看反编译的代码,你甚至可以这样写,

public static class SqlFunctions
{
    // Methods
    [EdmFunction("SqlServer", "STR")]
    public static string StringConvert(double? number)
    {
    }
}

There is a bunch of Sql Server functions that you can use in Linq querys in SqlFunctions class in System.Data.Objects.SqlClient namespace.

Look for sth like that in your Linq Provider library for Postgre, and if you can't find add a computed column with the value of asbinary(the_geom) and map that column in EF.

You may even could write sth like that if you look at the decompiled code,

public static class SqlFunctions
{
    // Methods
    [EdmFunction("SqlServer", "STR")]
    public static string StringConvert(double? number)
    {
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文