多分私は何かが足りない。「地理」データ型のSQLサーバー列があります。
C# コードで DbGeography 型を使用したいと考えています。SQLの地理からdbgeographyにキャストまたは変換する方法はありますか?
多分私は何かが足りない。「地理」データ型のSQLサーバー列があります。
C# コードで DbGeography 型を使用したいと考えています。SQLの地理からdbgeographyにキャストまたは変換する方法はありますか?
返信が遅くなり申し訳ありませんが、何か他のものを検索しているときにこれを見つけました。
次の操作を行うだけです。
SqlGeography theGeography;
int srid = 4326; // or alternative
DbGeography newGeography = DbGeography.FromText(theGeography.ToString(), srid);
逆にするには:
DbGeography theGeography;
SqlGeography newGeography = SqlGeography.Parse(theGeography.AsText()).MakeValid();
それが役立つことを願っています!
パフォーマンスが重要な場合は、well-known テキストの代わりに well-known バイナリを使用する必要があります。
var newGeography = DbGeography.FromBinary(theGeography.STAsBinary().Value);
それが重要な場合は、SRID を使用したオーバーロードがあります。1,000 個のかなり複雑なポリゴンを使用した単純なテストでは、バイナリ ベースのアプローチはテキスト ベースのアプローチよりも 4 倍高速です。
* Binary-based conversion
Run 1: 1948
Run 2: 1944
Run 3: 1959
Run 4: 1979
Run 5: 1988
Average: 1963.6
* Text-based conversion
Run 1: 8527
Run 2: 8553
Run 3: 8596
Run 4: 8535
Run 5: 8496
Average: 8541.4
EF6 を実行していない場合、提供されたソリューションは問題ないようです。初期のバージョンでは問題ありませんが、EF6 では、このアセンブリを参照するべきではありません。それはEFを少し狂わせます。