当前位置: 首页 > 面试题库 >

如何将Dapper与MS SQL Server(2012)地理空间/ SQLGeography列一起使用

越朗
2023-03-14
问题内容

我有一个SQL Server 2012数据库,该数据库的表包含一个 地理位置
列,并且我想在使用该数据库的.Net应用程序中使用Dapper,但据我所知,在Dapper代码中,“仅”实体框架DBGeography类型支持,底层SQLGeography数据类型存储库中的任何其他提。

Dapper还是可以“神奇地”处理这些列类型,还是我必须为这些显式编写Dapper.SqlMapper.TypeHandler?


问题答案:

SqlGeography在下一个发行版中,
再次通过 Dapper.EntityFramework软件包 添加了对的支持。我还没有构建/部署,因为我对这是否是最适合它的组装有两种看法,但是我也不希望依赖于Microsoft.SqlServer.Types核心库。但是,可能有一种方法可以做到这一点。

更新:现在已将其上移到核心库,因此您不需要任何EF引用或Dapper.EntityFramework; 它应该 工作 ;
这已经被推送为Dapper 1.32。

例子:

public void SqlGeography_SO25538154()
{
    Dapper.SqlMapper.ResetTypeHandlers(); // to show it doesn't depend on any
    connection.Execute("create table #SqlGeo (id int, geo geography)");

    var obj = new HazSqlGeo
    {
        Id = 1,
        Geo = SqlGeography.STLineFromText(
            new SqlChars(new SqlString(
                "LINESTRING(-122.360 47.656, -122.343 47.656 )")), 4326)
    };
    connection.Execute("insert #SqlGeo(id, geo) values (@Id, @Geo)", obj);
    var row = connection.Query<HazSqlGeo>(
        "select * from #SqlGeo where id=1").SingleOrDefault();
    row.IsNotNull();
    row.Id.IsEqualTo(1);
    row.Geo.IsNotNull();
}

class HazSqlGeo
{
    public int Id { get; set; }
    public SqlGeography Geo { get; set; }
}


 类似资料:
  • 我正在尝试为java应用程序制作一个表单。它包含一个带有用户列表的组合框。假设我有一个类教授,有3个属性。Id是“唯一的”,这是数据库所必需的。 我认为最用户友好的选项是在组合框中填写“教授”类的姓氏和名字,这就是我所做的。但是现在我不知道如何取回教授对象。 就像我说的,我用姓氏、空格和名字填充了组合框,但是一旦用户选择了教授,我不知道如何选择用户选择的教授。 有什么方法可以在Combobox中放

  • 我正在使用ssh-D创建套接字代理,想知道如何使用pip(或easy\u install)吗?我找到了这个问题,但那是一个http代理。 另外,请给我一个在OS X下工作的解决方案。(我尝试了proxifier,它可以与pip安装一起工作,但不能与sudo pip安装一起工作)

  • 如何强制testcontainers使用本地映像?

  • 问题内容: 我想使用standard从node.js发出传出HTTP调用。但是我无法直接从网络访问远程服务器,需要通过代理。 如何告诉node.js使用代理? 问题答案: 关于使用HTTP代理,Tim Macfarlane 的答案很接近。 使用HTTP代理(用于非安全请求)非常简单。您连接到代理并正常发出请求,只是路径部分包含完整的url,并且主机标头设置为您要连接的主机。 Tim与他的回答非常接

  • 问题内容: 我有一个布尔时间序列,我想用它来确定绘图中应加阴影的部分。 目前我有: 其中, r_min 和 r_max 只是y轴的最小值和最大值。 但是fill_between不会一直填充到图的顶部和底部,因为,因此我想改用 axvspan() 。 给定axvspan仅采用坐标,有什么简单的方法可以做到这一点?因此,我能想到的唯一方法是将所有彼此相邻且均为True的日期分组,然后将这些日期的第一个

  • 我有一个包含许多文档集合,其结构如下: 纬度范围为[25;55] 该收藏包含大约60万条记录。 我设置了2D_Sphere索引:db.myCollection.createIndex({location:“2DSphere”}) 我获得了所有的记录,但我只期望有几个记录(靠近我的坐标!) 有什么建议吗?提前致谢