C# + SQL Server 2014 + Entity Framework 6 (EF6) で geometry 型のカラム にデータを登録

SQL Server 2014 は geometry 型をサポートしていますが、EF6 では標準で geometry/geography を直接マッピングできないため、少し工夫が必要です。

🔹SQL Server 側

🔹byte[] に変換してマッピングする(失敗例1)

最初に、byte[] に変換してマッピングしましたが…

データ保存時に以下の例外が発生しました。

🔹SqlGeometry に変換してマッピングする(失敗例2)

次に、SqlGeometry に変換してマッピングしましたが…

データ保存時に上記と同じ例外が発生しました。

🔹DbGeometry に変換してマッピングする(成功例)

次にに、DbGeometry に変換してマッピングすると無事に登録できました。

🔹DbGeometryとSqlGeometryの違いは

👉DbGeometry と SqlGeometry は似ていますが、役割や使い方が違います。

特徴 DbGeometry SqlGeometry
名前空間 System.Data.Entity.Spatial Microsoft.SqlServer.Types
主な用途 EF6 のエンティティで geometry/geography を扱う SQL Server の geometry 型を直接操作
マッピング EF6 のエンティティで直接使える 直接は使えない(変換必要)
メソッド 基本的な生成/座標取得のみ SQL Server の空間関数が全部使える
ポータビリティ 抽象的 (SQL Server 固有でない) SQL Server 専用

シェアする

  • このエントリーをはてなブックマークに追加

フォローする