在实体框架中使用SQL函数选择

And*_*sen 2 .net entity-framework-4

我正在为PostgreSQL使用Devart EF-4提供程序.

在我的一个db表中,我有一个名为the_geom的列,它是一个包含多边形的PostGis Geometry类型列.简而言之,PostGis使用自己的二进制格式来存储几何值,因此要在我的应用程序中使用它,我需要将其转换为Well-Known-Binary(WKB),它是几何的标准化二进制表示.通过选择in,可以在标准SQL中轻松实现这一点

select asbinary(the_geom) from mytable
Run Code Online (Sandbox Code Playgroud)

最后一个问题是:我如何在Entity Framework中指定使用asbinary()函数来选择the_geom列?

Jah*_*ine 5

有一堆Sql Server函数可以SqlFunctionsSystem.Data.Objects.SqlClient命名空间中的类中使用Linq查询.

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

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

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