come tutti noi sappiamo, l'entità framework non può contenere dati geografici. Quindi la mia idea era di specificare la longitudine e la latitudine come decimali nel mio modello. Dopo aver eseguito lo script SQL per creare le tabelle, inizierei un altro script per aggiungere una colonna di geografia. Quindi vorrei aggiornare questa colonna su ogni INSERT o UPDATE (su longitudine e latitudine) da un trigger. Il seguente trigger è ok o è qualcosa di brutto? Te lo chiedo perché non ho molta familiarità con il trigger, ma funziona per ora.Trigger per INSERT e UPDATE sulla stessa tabella
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
Sarebbe felice se qualcuno potesse aiutarmi.
saluti
Edit:
copione sembra che:
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
)
)
opere, ma non può interrogare quella colonna:/ Thx
il trigger causerà l'integrità dei dati problemi se qualsiasi processo aggiorna o inserisce una serie di record. Non scrivere mai un trigger assumendo che sia inserito solo un record. – HLGEM
come modificarlo? – john
Vota per questo elemento Connect: http://connect.microsoft.com/SQLServer/feedback/details/378126/how-to-persist-a-calculated-geometry-or-geography-column –