【CodeFirst】项目启动时根据Entity自动创建表时,PostgreSQL数据库报错 返回

SqlSugar 处理完成
17 669

Entity代码:

2024-05-08_173819.png


错误消息:

2024-05-08_173707.png

SqlSugar.SqlSugarException

  HResult=0x80131500

  Message=42704: type "nvarchar2" does not exist


POSITION: 44

  Source=SqlSugar

  StackTrace:

   在 SqlSugar.Check.Exception(Boolean isException, String message, String[] args)

   在 SqlSugar.CodeFirstProvider.InitTables(Type entityType)


热忱回答17

  • image.png


    这个写法错的

    0 回复
  • datatype删掉就行了

    0 回复
  • 那如果是多数据库的场景:

      1. SQLServer              => 【字段A】数据类型为 nvarchar;

      2. Oracle                    => 字段A数据类型为 nvarchar2;

      3. MySQL和Postgre      => 字段A数据类型为 varchar

    只需要通过配置文件指定数据库类型,不需要再去手动修改Entity的属性A去创建对应数据表的类型。

    不通过指定 ColumnDataType 那应该怎么做才能实现? 

    0 回复
  • @fate sta

    0 回复
  • @fate sta

    那如果是多数据库的场景:

      1. SQLServer              => 【字段A】数据类型为 nvarchar;

      2. Oracle                    => 【字段A】数据类型为 nvarchar2;

      3. MySQL和Postgre      => 【字段A】数据类型为 varchar;

    只需要通过配置文件指定数据库类型,不需要再去手动修改Entity的属性A去创建对应数据表的类型。

    不通过指定 ColumnDataType 那应该怎么做才能实现? 

    0 回复
  •   DbType = SqlSugar.DbType.SqlServer,
        ConnectionString = Config.ConnectionString,
        IsAutoCloseConnection = true,
         MoreSettings=new ConnMoreSettings() {
              SqlServerCodeFirstNvarchar= true,//建表字符串默认Nvarchar
         }

    sqlserver和mysql是完全可以配的

    0 回复
  • 默认varchar 配上SqlServerCodeFirstNvarchar满足了  除ORACLE外的需求

    0 回复
  • Oracle可以单独处理一下

    image.png

    0 回复
  • 算了我加个功能吧 启用nvarchar2和和sqlserver一样用法

    0 回复
  • SqlSugarCore 5.1.4.155-preview13


    过五分钟后勾一下预览


    用法

                    DbType = DbType.Oracle,
                    ConnectionString = Connection, 
                    MoreSettings=new ConnMoreSettings() 
                    {
                        SqlServerCodeFirstNvarchar=true,//sqlserver用nvarchar
                         OracleCodeFirstNvarchar2=true//oracle用navarchar2
                         //其他是varchar
                    }


    0 回复
  • @fate sta

    image.png


    image.png


    image.png


    image.png

    数据库是PostgreSQL,还是会抛异常。。。

    0 回复
  • @北斗星05:提供完整DEMO, PGSQL是不可能生成nvarchar2的

    0 回复
  • 你可以检查一下你的实体没有漏改的

    0 回复
  • 还有问题需要提供完整的DEMO

    0 回复
  • @fate sta

    不好意思,确实改漏了一个BaseEntity。

    麻烦问一下 稳定版大概什么时间发布?

    0 回复
  • @北斗星05:一般一周左右

    0 回复
  • @fate sta

    好的,非常感谢及时帮助解决问题

    0 回复