PostgreSQL

字符串格式  PORT=5432;DATABASE=SqlSugar4xTest;HOST=localhost;PASSWORD=haosql;USER ID=postgres


1、不规范表的支持

我们pgsql数据库表名称和字段名称应该全部设置为小写,这样我们查询的时候就不区别大小写,但是有些人就是不规范建表,带有大写字母

//按PG规范建的不需要设置  PgSqlIsAutoToLower(默认值true)
SqlSugarClient(new ConnectionConfig()
{
    DbType = SqlSugar.DbType.SqlServer,
    ConnectionString = Config.ConnectionString,
    InitKeyType = InitKeyType.Attribute,
    IsAutoCloseConnection = true,
    MoreSettings=new ConnMoreSettings() {
        PgSqlIsAutoToLower=false //数据库存在大写字段的 ,需要把这个设为false
    },
    AopEvents = new AopEvents
    {
        OnLogExecuting = (sql, p) =>
        {
            Console.WriteLine(sql);
            Console.WriteLine(string.Join(",", p?.Select(it => it.ParameterName + ":" + it.Value)));
        }
    }
 });
 //当PgSqlIsAutoToLower=false之后你的实体必须与数据库一模一样,你可以使用别名

 

2、JSON类型

PgSql 的Json类型操作实体需要配置

//可以是string类型  
[SugarColumn(IsJson =true,ColumnDataType ="json")] 
Public string JsonText{get;set;}
  
//可以是JSON对应的对象  
[SugarColumn(IsJson = true,ColumnDataType ="json")]
Public List<Order> JsonText{get;set;}


3、数组类型

 
[SugarColumn(ColumnDataType = "text []", IsArray = true)]  
public string [] MenuIds { get; set; }


4、geometry

当字段有这种格式的时候一定要加用自定义扩展函数实现

var db=new SqlSugarClient(new ConnectionConfig()
            {
                DbType = SqlSugar.DbType.PostgreSQL,
                ConnectionString = Config.ConnectionString,
                InitKeyType = InitKeyType.Attribute,
                IsAutoCloseConnection = true,
                ConfigureExternalServices=new ConfigureExternalServices()
                {
                     SqlFuncServices=new List<SqlFuncExternal>() {
                         PgSqlExtFunc.SqlFuncExternal //这里要加上这么扩展类
                     }
                });
  var xx = db.Queryable<zc_land>().Select(it => new zc_land(){
     name=it.name,
     geom= PgSqlExtFunc.st_astext(it.geom)//这样处理
                    
    }).ToList();

PgSqlExtFunc 类下 http://www.donet5.com/Ask/11/11063  这里面获取