栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

.Net-ABP基础学习-postgis

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

.Net-ABP基础学习-postgis

其实之前还学了授权和signalr

但是TVT,我的笔记没了呜呜呜呜呜呜

数据库对此插件的安装

 PostGIS教程三:创建空间数据库不睡觉的怪叔叔的博客-CSDN博客postgis教程

在abp中配置
  1. entityframecore中导包

    Npgsql.EntityFrameworkCore.PostgreSQL.NetTopologySuite

  2. 在dbcontextfactory中配置

注意两处都要配置

var builder = new DbContextOptionsBuilder()
                .UseNpgsql(configuration.GetConnectionString("Default"), o => o.UseNetTopologySuite());// 加上第二个参数用于postgis
  1. 在dbcontext中配置

首先保证数据库搞定了嗷

protected override void OnModelCreating(ModelBuilder builder)
{
    builder.HasPostgresExtension("postgis");
}
  1. 写一个实体

注意类型导包NetTopologySuite

public class City
{
    public int Id { get; set; }
    public string Name { get; set; }
    [Column(TypeName="geography")]
    public Point Location { get; set; }
}

此特性等效于

protected override void OnModelCreating(ModelBuilder builder)
{
    builder.Entity().Property(b => b.Location).HasColumnType("geography (point)");
}

【问题】报错500,说geometry的userdata是object不行

是配置userpngsql少写了参数

【问题】NetTopologySuite.Geometries.Point needs to have a constructor with 0 args or only optional args.

【关于如何使用AutoMapper】AutoMapper小结 - 呆河马 - 博客园 (cnblogs.com)

c# - How to automap this(mapping sub members) - Stack Overflow

【问题】1.仓储加上之后运行不出来swagger还内存疯狂上升

是因为service中不能直接用geometry当参数,必须是它的子类实例。

2.在这之后报错数字什么什么

System.Text.Json改为Newtonsoft.Json

修改json解析配置为另一个后

3.报错循环引用的问题,ReferenceLoopHandling

然后有一个特性可以解决循环引用问题(循环引用发生在return之后,最后最后的地方)

(24条消息) Newtonsoft.Json的循环引用解决方案_学而时习之-CSDN博客

解决不了,就需要写循环引用的那个东西的dto来避免循环引用。

CreateMap().ReverseMap();// ReverseMap就是同时设置相反的

写PointDto然后配置AutoMap,最后修改返回的类型为Dto而不是entity

    var entity = await _cityRepository.GetNearestCity(currentLocation);
    // 返回转为dto,这样在返回之后的序列化为json就不会报错
    // 因为直接返回City序列化会遇到循环引用的问题
    return await MapToGetOutputDtoAsync(entity);
其他注意
  1. Point没有主键

  2. 配置AutoMap可以这样写一个用两次:

CreateMap().ReverseMap();// ReverseMap就是同时设置相反的
  1. dto的属性名一定要和实体一致,不然500。多边形传入的构造参数point需要连成一个圈(即首尾同一个点)

  2. 如果在service偷懒把接口和实现写在一起,一般会把接口写在上面

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/911208.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号