入力パラメーターを持つストアド プロシージャがあります。
@Latitude float
, @Longitude float
しかし、これらの値を渡すと:
@Latitude=-28.640328248358344
,@Longitude=153.61249352645871
テーブルに格納されている値は次のとおりです。
Lat: -28.6403
Lng: 153.612
テーブルで標準の挿入または更新を行うと、値は正しいです。
params を float(54) に変更しようとしましたが、違いはありませんでした... float を使用している理由は、Lat/Lng が実際には地理列から計算された列であるためです (そして、デザイナーではそれらが float であると述べています) ) - ストアド プロシージャからの lat/lng 値をいくつかの varchar 列に挿入することにより、計算された列に関連していないことを再確認しました。
私は EF を使用しており、エンティティの値が正しいことを確認できます。SQL プロファイラーをチェックして、完全な値が exec 呼び出しに含まれていることを確認しました。
編集: これらの値を geography 型の GeoLocation 列呼び出しに挿入します。
GeoLocation = geography::STPointFromText('POINT(' + CONVERT(varchar, @Longitude) + ' ' + CONVERT(varchar, @Latitude) + ')',4326)