.Net-ABP基础学习-postgis

其实之前还学了授权和signalr

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

数据库对此插件的安装

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

在abp中配置

  1. entityframecore中导包

    Npgsql.EntityFrameworkCore.PostgreSQL.NetTopologySuite

  2. 在dbcontextfactory中配置

注意两处都要配置

var builder = new DbContextOptionsBuilder<BookStoreDbContext>()
                .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<City>().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<Point, PointDto>().ReverseMap();// ReverseMap就是同时设置相反的

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

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

其他注意

  1. Point没有主键

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值