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


热忱回答(6)
-
fate sta VIP0
2025/7/22new HanaConnection(字符串).Open()
保证原生能跑ORM应该就能用
0 回复 -
刀刀奇 VIP0
2025/7/22@fate sta:需要在linux 服务器上装hanaclient 客户端吗
0 回复 -
碧雪晴天 VIP0
2025/8/20@刀刀奇:
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=xxx0 回复 -
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 VIP0
2025/8/20像上面一样可以自动转换
0 回复 -
碧雪晴天 VIP0
2025/8/20@fate sta:OK,明白了
0 回复