我正在尝试在 SQL Server 2008 R2 中使用 sys.geography 类型。我想将此地理类型用于基于位置的查询。例如,我将位置(作为经度和纬度变量)传递给存储过程并返回附近的任何记录。
问题是实体框架不支持地理类型,所以我不能直接从 c# 设置这个值。
我通过在同一个表中创建 LocationLatitude 和 LocationLongitude 列来解决这个问题。我使用实体框架中的 LocationLatitude 和 LocationLongitude 列,并使用数据库存储过程中的地理类型“Location”列。
据我所知,有三种方法可以从这两个字段中导出地理“位置”列。
- 使“位置”成为计算列
- 创建一个返回表格内容+计算位置的视图
- 在表上创建数据触发器。这会在每次更新 LocationLongitude 或 LocationLatitude 列时计算地理值并填充 Location 列。
我想知道哪个在性能方面会更好。我认为#1将是最糟糕的,所以我认为这是#2和#3之间的折腾。
我目前正在使用#3(数据触发器),但我知道通常最好避免数据触发器。这意味着从这个角度来看,#2(视图)将是最好的,但是......我担心使用#2可能是一件非常愚蠢的事情,出于某种原因。Stack Overflow 是最好的检查点!
Soo... 我应该使用#1、#2、#3 还是其他方法?