首页 > 解决方案 > 如何在与实体框架连接并使用 dapper 的 asp.net mvc 中插入和检索地理数据?

问题描述

我是使用地理数据类型和使用 dapper 的新手,我已经在互联网上搜索了一段时间,但大多数答案都不是地理类型或已过时。我正在使用谷歌的 API 进行动态跟踪的项目,但现在如果它只显示我介绍的各个位置就可以了,感谢任何帮助。

这是我的地理表的模型,它不完整,但现在我只需要插入和检索数据,我的纬度和经度属性也是空的,这样我就可以通过设备动态引入任何数据

[Table("GEOGRAPHY")]
public partial class GEOGRAPHY
{
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
    public GEOGRAPHY()
    {
        DEV_GEO = new HashSet<DEV_GEO>();
        RECORDs = new HashSet<RECORD>();
    }

    [Key]
    public int ID_ROUTE { get; set; }

    public DbGeography LAT { get; set; }
    public DbGeography LONG { get; set; }

    [Required]
    [StringLength(2)]
    public string ISO { get; set; }

    [Required]
    [StringLength(80)]
    public string COUNTRY { get; set; }

    [Required]
    [StringLength(80)]
    public string NICENAME { get; set; }

    [StringLength(3)]
    public string ISO3 { get; set; }

    public short? NUMCODE { get; set; }
    public int PHONECODE { get; set; }

    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
    public virtual ICollection<DEV_GEO> DEV_GEO { get; set; }

    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
    public virtual ICollection<RECORD> RECORDs { get; set; }
}

标签: c#sql-serverasp.net-mvcentity-frameworkdapper

解决方案


由于您提到您使用的是 SQL Server,因此您可以利用特定的 SQL Server 功能支持。我为此写了一篇文章以及示例代码:

https://medium.com/dapper-net/sql-server-specific-features-2773d894a6ae

关键点是

  1. SQL Server 空间数据类型在 .NET Core 中尚不可用
  2. 使用“Microsoft.SqlServer.Types”程序集可能会变成版本控制的噩梦,请仔细检查您的 app.config 以确保您引用的是最新版本

推荐阅读