私たち全員が知っているように、エンティティフレームワークは地理データを保持できません。だから私の考えは、私のモデルでは小数点としての経度と緯度を指定することでした。テーブルを作成するためにSQLスクリプトを実行した後、地理的な列を追加するための別のスクリプトを開始します。それから、私はトリガーによってINSERTまたはUPDATE(経度と緯度)ごとにこの列を更新したいと思います。次のトリガーは大丈夫ですか、それとも悪いですか?私はトリガーにあまり慣れていないので頼んでいますが、今のところうまくいきます。同じテーブルのINSERTとUPDATEのトリガー
CREATE TRIGGER Update_Geography
ON [People]
FOR INSERT, UPDATE
AS
BEGIN
DECLARE @longitude DECIMAL(8, 5), @latitude DECIMAL(8, 5)
SET @longitude = (SELECT ins.Location_Longitude FROM inserted ins)
SET @latitude = (SELECT ins.Location_Latitude FROM inserted ins)
IF (@longitude != 0 AND @latitude != 0)
BEGIN
UPDATE [People]
SET
Location_Geography = geography::STGeomFromText('POINT(' + CONVERT(VARCHAR(100),@longitude) + ' ' + CONVERT(VARCHAR(100),@latitude) + ')',4326)
WHERE
Id = (SELECT ins.Id FROM inserted ins)
END
END
誰かが私を助けることができたら嬉しいです。
よろしく
編集:
スクリプトは以下のようになります。
ALTER TABLE [People] ADD Location_Geography AS (
CONVERT(GEOGRAPHY, CASE
WHEN Location_Latitude 0 AND Location_Longitude 0 THEN
geography::STGeomFromText('POINT(' + CONVERT(VARCHAR, Location_Longitude) + ' ' + CONVERT(VARCHAR, Location_Latitude) + ')',4326)
ELSE
NULL
END
)
)
は動作しますが、その列を照会することはできません:/ Thxを
あなたのトリガは、データの整合性の原因となりますプロセスがレコードのバッチを更新または挿入した場合の問題。 1つのレコードだけが挿入されていると仮定して、トリガーを書き込まないでください。 – HLGEM
それを変更するには? – john
この接続項目に投票してください:http://connect.microsoft.com/SQLServer/feedback/details/378126/how-to-persist-a-calculated-geometry-orge-gege-column –