0

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

问题是实体框架不支持地理类型,所以我不能直接从 c# 设置这个值。

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

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

  1. 使“位置”成为计算列
  2. 创建一个返回表格内容+计算位置的视图
  3. 在表上创建数据触发器。这会在每次更新 LocationLongitude 或 LocationLatitude 列时计算地理值并填充 Location 列。

我想知道哪个在性能方面会更好。我认为#1将是最糟糕的,所以我认为这是#2和#3之间的折腾。

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

Soo... 我应该使用#1、#2、#3 还是其他方法?

4

1 回答 1

1

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

于 2013-08-13T07:40:07.963 回答