在linux 环境下连接hana 数据库一致失败。同一份代码在windows 连接没问题 返回

SqlSugar 沟通中
6 338

image.png

image.png

热忱回答6

  • fate sta fate sta VIP0
    2025/7/22

    new HanaConnection(字符串).Open()

    保证原生能跑ORM应该就能用

    0 回复
  • @fate sta:需要在linux 服务器上装hanaclient 客户端吗


    0 回复
  • @刀刀奇


    mac和linux下得再引用libadonetHDB.dylib这个动态链接库,hdbclient安装以后在dotnetcore目录下能找到,

    把它复制到bin目录就行了。



    @fate sta

    能否优化一下生成查询语句的逻辑,自动把类名和属性名转大写。

    比如:

    public class T001
    {
       public string bukrs { get; set; }
    }

    这样生成的查询语句是:

    SELECT "bukrs" FROM "T001"

    这样会报invalid column name: bukrs,类的属性里定义成全大写字母的BUKRS才是正确的查询

    SELECT "BUKRS" FROM "T001"

    但是毕竟这样命名又不符合C#的习惯。


    另外,HANA的连接字符串如果不指定CURRENTSCHEMA这个属性的话,

    Sap.Data.Hana的默认特性是在连接字符串的UID(登陆账号)这个SCHEMA下找表,

    HANA数据库作为SAP系统的后端数据库,SCHEMA和登陆帐号大概率是不一样的,

    这一点是不是可以在DEMO里用注释写一下,连接字符串使用

    DRIVER={HANAQAS64};SERVER=serverip:port;UID=xxx;PWD=xxx;CURRENTSCHEMA=xxx


    0 回复
  • fate sta fate sta VIP0
    2025/8/20

    @碧雪晴天

                    DbType = DbType.HANA,

                    IsAutoCloseConnection = true,

                    ConfigureExternalServices=new ConfigureExternalServices() {

                        EntityNameService = (x, entityInfo) => 

                        {

                           entityInfo.DbTableName= entityInfo.DbTableName?.ToUpper();

                        },

                        EntityService = (x, col) => 

                        {

                            col.DbColumnName = col.DbColumnName?.ToUpper();

                        }

                    }


    0 回复
  • fate sta fate sta VIP0
    2025/8/20

    像上面一样可以自动转换

    0 回复
  • @fate sta:OK,明白了

    0 回复