2011-01-06 2 views
2

私はPostgreSQL用のDevart EF-4プロバイダを使用しています。Entity FrameworkでSQL関数を使用する選択

私のdbテーブルの1つに、the_geomという名前のカラムがあります。このカラムは、ポリゴンを保持するPostGis Geometryタイプのカラムです。 PostGisは独自のバイナリ形式を使用してジオメトリ値を格納するため、アプリケーションで使用できるようにするために、ジオメトリの標準化されたバイナリ表現であるWell-Known-Binary(WKB)に変換する必要があります。これが最後の質問はこれです

select asbinary(the_geom) from mytable 

で選択することで、標準SQLには非常に簡単に達成することができます: は、どのように私は、Entity Frameworkの中で、the_geom列を選択しasbinary()関数を使用するように指定するのですか?

答えて

5

System.Data.Objects.SqlClientネームスペースのSqlFunctionsクラスのLinqクエリーで使用できるSQL Serverの関数がたくさんあります。

PostgreのLinq Providerライブラリでsthを探してください。値がasbinary(the_geom)の計算カラムを見つけられず、その列をEFにマップできない場合は、stqを探してください。

あなたも、逆コンパイル、コード、

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

を見れば、私はそのような何かを見つけることができなかったことのようにSTHを書くことができます。私はよく知られているテキスト(WKT)とWKBの両方として値を保存することで、私の問題を解決しました。 WKTが更新されるたびに、トリガを使用してWKB列を更新しました。冗長ですが、仕事は終わりです。 –

関連する問題