3

我正在编写一些空间示例,并决定试一试 Dapper,尽管 EF 有空间支持,而且我喜欢再次控制我的 SQL(感谢 Sam 和 Marc)。

但是,我需要能够拥有支持DbGeography类的 POCO。例如 :

public class BuriedTreasure {
   public int PirateId { get; set; }
   public DbGeography MarksTheSpot { get; set; }
}

我的 Google foo 一直让我失望,我能找到的最接近的匹配是这个问题,尽管它只适合添加空间支持作为参数(所以它是 50%)。

现在据我所知,我仅限于以下选项,这些选项对我来说都不是可行的解决方案。

  1. 自定义 Dapper 代码以了解 SQL Server 特定类型
  2. 在我的 POCO 中指定 LONG、LAT 和 ELEVATION 小数,并在我的存储过程中创建 SPATIAL 类型,并使用另一个过程来检索值(或使用持久计算列,但几乎相同)

备择方案?

4

1 回答 1

1

对于任何感兴趣的人,基本上我在上面发布的问题中选择了选项 2。我将空间数据映射到小数。存储过程进行了一些额外的检查,因此很容易在其中构造点,即以下代码段:

Yarrrr = geography::Point(@Latitude, @Longitude, 4326)

本质上,DbGeography 类是不可变的,去展示... RTFM :)

根本不需要对 dapper 进行任何更改!

于 2013-08-07T20:35:40.297 回答