From 441309e0d079f6ced9511bb562702aee11e0b72e Mon Sep 17 00:00:00 2001 From: 2881099 <2881099@qq.com> Date: Mon, 23 Nov 2020 10:56:55 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E5=A2=9E=E5=8A=A0=20pgsql=20=E8=A1=A8?= =?UTF-8?q?=E8=BE=BE=E5=BC=8F=E6=A0=91=E8=A7=A3=E6=9E=90=20hstore[""]?= =?UTF-8?q?=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PostgreSQL/PostgreSQLExpression/OtherTest.cs | 3 ++- .../FreeSql.Provider.KingbaseES/KingbaseESExpression.cs | 3 ++- .../KingbaseES/OdbcKingbaseESExpression.cs | 3 ++- .../PostgreSQL/OdbcPostgreSQLExpression.cs | 5 +++-- .../FreeSql.Provider.PostgreSQL/PostgreSQLExpression.cs | 5 +++-- 5 files changed, 12 insertions(+), 7 deletions(-) diff --git a/FreeSql.Tests/FreeSql.Tests/PostgreSQL/PostgreSQLExpression/OtherTest.cs b/FreeSql.Tests/FreeSql.Tests/PostgreSQL/PostgreSQLExpression/OtherTest.cs index a70426b1..18dc637d 100644 --- a/FreeSql.Tests/FreeSql.Tests/PostgreSQL/PostgreSQLExpression/OtherTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/PostgreSQL/PostgreSQLExpression/OtherTest.cs @@ -175,9 +175,10 @@ namespace FreeSql.Tests.PostgreSQLExpression [Fact] public void HStore() { - var sql1 = select.Where(a => a.testFieldHStore.ContainsKey("a")).ToList(); var sql2 = select.Where(a => a.testFieldHStore.ContainsKey("a") == false).ToList(); + + var sql3 = select.Where(a => a.testFieldHStore["a"] == "xxx").ToList(); } [Table(Name = "tb_alltype")] diff --git a/Providers/FreeSql.Provider.KingbaseES/KingbaseESExpression.cs b/Providers/FreeSql.Provider.KingbaseES/KingbaseESExpression.cs index 1c174d31..1514da29 100644 --- a/Providers/FreeSql.Provider.KingbaseES/KingbaseESExpression.cs +++ b/Providers/FreeSql.Provider.KingbaseES/KingbaseESExpression.cs @@ -118,11 +118,12 @@ namespace FreeSql.KingbaseES if (objType != null || objType.IsArrayOrList()) { string left = null; - if (objType.FullName == typeof(Dictionary).FullName) + if (objType == typeof(Dictionary)) { left = objExp == null ? null : getExp(objExp); switch (callExp.Method.Name) { + case "get_Item": return $"{left}->{getExp(callExp.Arguments[argIndex])}"; case "Contains": var right = getExp(callExp.Arguments[argIndex]); return $"({left} @> ({right}))"; diff --git a/Providers/FreeSql.Provider.Odbc/KingbaseES/OdbcKingbaseESExpression.cs b/Providers/FreeSql.Provider.Odbc/KingbaseES/OdbcKingbaseESExpression.cs index c9299d53..47adfaba 100644 --- a/Providers/FreeSql.Provider.Odbc/KingbaseES/OdbcKingbaseESExpression.cs +++ b/Providers/FreeSql.Provider.Odbc/KingbaseES/OdbcKingbaseESExpression.cs @@ -118,11 +118,12 @@ namespace FreeSql.Odbc.KingbaseES if (objType != null || objType.IsArrayOrList()) { string left = null; - if (objType.FullName == typeof(Dictionary).FullName) + if (objType == typeof(Dictionary)) { left = objExp == null ? null : getExp(objExp); switch (callExp.Method.Name) { + case "get_Item": return $"{left}->{getExp(callExp.Arguments[argIndex])}"; case "Contains": var right = getExp(callExp.Arguments[argIndex]); return $"({left} @> ({right}))"; diff --git a/Providers/FreeSql.Provider.Odbc/PostgreSQL/OdbcPostgreSQLExpression.cs b/Providers/FreeSql.Provider.Odbc/PostgreSQL/OdbcPostgreSQLExpression.cs index fb932479..be0a6e73 100644 --- a/Providers/FreeSql.Provider.Odbc/PostgreSQL/OdbcPostgreSQLExpression.cs +++ b/Providers/FreeSql.Provider.Odbc/PostgreSQL/OdbcPostgreSQLExpression.cs @@ -118,11 +118,12 @@ namespace FreeSql.Odbc.PostgreSQL if (objType != null || objType.IsArrayOrList()) { string left = null; - if (objType.FullName == typeof(Dictionary).FullName) + if (objType == typeof(Dictionary)) { left = objExp == null ? null : getExp(objExp); switch (callExp.Method.Name) { + case "get_Item": return $"{left}->{getExp(callExp.Arguments[argIndex])}"; case "Contains": var right = getExp(callExp.Arguments[argIndex]); return $"({left} @> ({right}))"; @@ -206,7 +207,7 @@ namespace FreeSql.Odbc.PostgreSQL } break; } - if (memParentExp.FullName == typeof(Dictionary).FullName) + if (memParentExp == typeof(Dictionary)) { var left = getExp(memExp.Expression); switch (memExp.Member.Name) diff --git a/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLExpression.cs b/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLExpression.cs index d2524cb4..d536881e 100644 --- a/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLExpression.cs +++ b/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLExpression.cs @@ -149,11 +149,12 @@ namespace FreeSql.PostgreSQL } break; } - if (objType.FullName == typeof(Dictionary).FullName) + if (objType == typeof(Dictionary)) { left = objExp == null ? null : getExp(objExp); switch (callExp.Method.Name) { + case "get_Item": return $"{left}->{getExp(callExp.Arguments[argIndex])}"; case "Contains": var right = getExp(callExp.Arguments[argIndex]); return $"({left} @> ({right}))"; @@ -237,7 +238,7 @@ namespace FreeSql.PostgreSQL } break; } - if (memParentExp.FullName == typeof(Dictionary).FullName) + if (memParentExp == typeof(Dictionary)) { var left = getExp(memExp.Expression); switch (memExp.Member.Name)