SQL Server地理类型性能 - 数据触发器与视图

时间:2013-08-09 11:22:48

标签: sql-server sql-server-2008 entity-framework sqlgeography

我正在尝试在SQL Server 2008 R2中使用sys.geography类型。我想将这种地理类型用于基于位置的查询。例如,我将位置(作为经度和纬度变量)传递给存储过程并返回附近的任何记录。

问题是实体框架不支持地理类型,因此我无法直接从c#设置此值。

通过在同一个表中创建LocationLatitude和LocationLongitude列,我解决了这个问题。我使用实体框架中的LocationLatitude和LocationLongitude列,并使用数据库存储过程中的地理类型“Location”列。

据我所知,有三种方法可以从这两个字段中获取地理“位置”列。

  1. 将“位置”设为计算列
  2. 创建一个返回表格内容+计算位置
  3. 的视图
  4. 在表格上创建数据触发器。这会计算地理位置值,并在每次更新LocationLongitude或LocationLatitude列时填充“位置”列。
  5. 我想知道在性能方面哪个更好。我认为#1将是最差的,所以我认为这是#2和#3之间的折腾。

    我目前正在使用#3(数据触发器),但我知道通常最好避免使用数据触发器。这意味着#2(视图)从这个角度来看是最好的但是......我担心使用#2可能是一个令人难以置信的愚蠢的事情,出于某种原因。 Stack Overflow是检查它的最佳位置!

    Soo ......我应该使用#1,#2,#3或其他方法吗?

1 个答案:

答案 0 :(得分:1)

Entity Framework 5支持地理数据类型。