众所周知,实体框架无法保存地理数据。因此我的想法是,在我的模型中将经度和纬度指定为十进制数。在执行用于创建表的SQL脚本后,我会开始另一个脚本以添加地理列。然后,我想通过触发器在每次插入或更新(经度和纬度)时更新此列。以下触发器是否可以,还是有什么问题?我问这个问题是因为我对触发器不太熟悉,但它现在运作良好。
触发器如下:
问候
编辑:
脚本如下:
触发器如下:
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
)
)
这是可以工作的,但无法查询该列 :/
谢谢