エンティティフレームワーク/ nhibernateをsql2008 geographyデータ型で使用する
-
03-07-2019 - |
質問
SQL Express 2008とvs2008を使用しており、C#で記述しています。
Geography列を含むdbテーブルがあり、そこに収集したgpsデータを入れる必要があります。このテーブルのEntity-Frameworkマッピングを作成しようとすると、列を無視しただけで、そのような列タイプをマップできないという警告が表示されました。 次に、nHibernate.Spatialプロジェクトを調べましたが、GeographyではなくGeometryタイプのみを変換しているようです。運がありません。 ビューを使用してGeographyをVarBinaryにキャストし、作成されたエンティティクラスに、バイナリをGeographyに逆シリアル化する別のプロパティを追加できると言われました。これはデータベースからデータを読み取るためには機能すると思いますが、それらの行をデータベースに挿入する必要もあり、ビューに行を追加することはできません。 C#コードで、dbからGeographyデータを簡単に読み書きするために使用できる他のトリックはありますか?
解決
EFについてはあまり知りませんが、NHibernateでは IUserType
を使用してEFの型フレームワークを拡張できます。それについてはレイヒューストンのブログ。
これを使用して、 Ayendeの例
他のヒント
現時点では、Entity Framework v1はSQL UDTをサポートしていません-2008の空間タイプはUDTです。
WKB(byte [] / varbinary)を使用してlong / latデータを保存できます。
補足として、次のバージョン(1.5 CTP)のMicrosoft MIX09ではUDTのサポートに気付きませんでした。たぶん何かを見逃した。