Skip to content

Commit b558986

Browse files
committed
Merge branch 'master' of https://github.com/tobybain/FreeSql
2 parents 57ea2a5 + ed9de2a commit b558986

File tree

12 files changed

+36
-20
lines changed

12 files changed

+36
-20
lines changed

FreeSql/Extensions/LambadaExpressionExtensions.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,13 @@ public static ParameterExpression GetParameter(this Expression exp)
248248
return test.Result;
249249
}
250250

251+
public static bool IsReadonlySpanOp_Implicit(this Expression exp)
252+
{
253+
return exp.NodeType == ExpressionType.Call &&
254+
exp is MethodCallExpression exp3 &&
255+
exp3.Type.Name == "ReadOnlySpan`1" && exp3.Method.Name == "op_Implicit" && exp3.Arguments.Count == 1;
256+
}
257+
251258
static ConcurrentDictionary<Type, ConcurrentDictionary<string, MethodInfo>> _dicTypeMethod = new ConcurrentDictionary<Type, ConcurrentDictionary<string, MethodInfo>>();
252259
public static bool IsStringJoin(this MethodCallExpression exp, out Expression tolistObjectExpOut, out MethodInfo toListMethodOut, out LambdaExpression toListArgs0Out)
253260
{

FreeSql/Internal/CommonExpression.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1137,8 +1137,7 @@ public string ExpressionLambdaToSql(Expression exp, ExpTSC tsc)
11371137
}
11381138
case ExpressionType.Call:
11391139
var exp3 = exp as MethodCallExpression;
1140-
if (exp3.Type.Name == "ReadOnlySpan`1" && exp3.Method.Name == "op_Implicit" && exp3.Arguments.Count == 1)
1141-
return ExpressionLambdaToSql(exp3.Arguments[0], tsc);
1140+
if (exp3.IsReadonlySpanOp_Implicit()) return ExpressionLambdaToSql(exp3.Arguments[0], tsc);
11421141
if (!tsc.isNotSetMapColumnTmp) tsc.mapType = null;
11431142
if (exp3.IsExpressionCall())
11441143
{

Providers/FreeSql.Provider.Custom/CustomAdo/CustomAdo.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public CustomAdo(CommonUtils util, string masterConnectionString, string[] slave
1717
base._util = util;
1818
if (connectionFactory != null)
1919
{
20-
var pool = new FreeSql.Internal.CommonProvider.DbConnectionPool(DataType.SqlServer, connectionFactory);
20+
var pool = new FreeSql.Internal.CommonProvider.DbConnectionPool(DataType.Custom, connectionFactory);
2121
ConnectionString = pool.TestConnection?.ConnectionString;
2222
MasterPool = pool;
2323
_CreateCommandConnection = pool.TestConnection;

Providers/FreeSql.Provider.Custom/MySql/CustomMySqlAdo/CustomMySqlAdo.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,13 @@ public class CustomMySqlAdo : FreeSql.Internal.CommonProvider.AdoProvider
1313
{
1414
DbProviderFactory Factory => FreeSqlCustomAdapterGlobalExtensions.GetDbProviderFactory(_util._orm);
1515

16-
public CustomMySqlAdo() : base(DataType.OdbcMySql, null, null) { }
17-
public CustomMySqlAdo(CommonUtils util, string masterConnectionString, string[] slaveConnectionStrings, Func<DbConnection> connectionFactory) : base(DataType.OdbcMySql, masterConnectionString, slaveConnectionStrings)
16+
public CustomMySqlAdo() : base(DataType.CustomMySql, null, null) { }
17+
public CustomMySqlAdo(CommonUtils util, string masterConnectionString, string[] slaveConnectionStrings, Func<DbConnection> connectionFactory) : base(DataType.CustomMySql, masterConnectionString, slaveConnectionStrings)
1818
{
1919
base._util = util;
2020
if (connectionFactory != null)
2121
{
22-
var pool = new FreeSql.Internal.CommonProvider.DbConnectionPool(DataType.SqlServer, connectionFactory);
22+
var pool = new FreeSql.Internal.CommonProvider.DbConnectionPool(DataType.CustomMySql, connectionFactory);
2323
ConnectionString = pool.TestConnection?.ConnectionString;
2424
MasterPool = pool;
2525
return;

Providers/FreeSql.Provider.Custom/Oracle/CustomOracleAdo/CustomOracleAdo.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,13 @@ class CustomOracleAdo : FreeSql.Internal.CommonProvider.AdoProvider
1414
{
1515
DbProviderFactory Factory => FreeSqlCustomAdapterGlobalExtensions.GetDbProviderFactory(_util._orm);
1616

17-
public CustomOracleAdo() : base(DataType.OdbcOracle, null, null) { }
18-
public CustomOracleAdo(CommonUtils util, string masterConnectionString, string[] slaveConnectionStrings, Func<DbConnection> connectionFactory) : base(DataType.OdbcOracle, masterConnectionString, slaveConnectionStrings)
17+
public CustomOracleAdo() : base(DataType.CustomOracle, null, null) { }
18+
public CustomOracleAdo(CommonUtils util, string masterConnectionString, string[] slaveConnectionStrings, Func<DbConnection> connectionFactory) : base(DataType.CustomOracle, masterConnectionString, slaveConnectionStrings)
1919
{
2020
base._util = util;
2121
if (connectionFactory != null)
2222
{
23-
var pool = new FreeSql.Internal.CommonProvider.DbConnectionPool(DataType.SqlServer, connectionFactory);
23+
var pool = new FreeSql.Internal.CommonProvider.DbConnectionPool(DataType.CustomOracle, connectionFactory);
2424
ConnectionString = pool.TestConnection?.ConnectionString;
2525
MasterPool = pool;
2626
using (var conn = pool.Get())

Providers/FreeSql.Provider.Custom/PostgreSQL/CustomPostgreSQLAdo/CustomPostgreSQLAdo.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,13 @@ class CustomPostgreSQLAdo : FreeSql.Internal.CommonProvider.AdoProvider
1414
{
1515
DbProviderFactory Factory => FreeSqlCustomAdapterGlobalExtensions.GetDbProviderFactory(_util._orm);
1616

17-
public CustomPostgreSQLAdo() : base(DataType.OdbcPostgreSQL, null, null) { }
18-
public CustomPostgreSQLAdo(CommonUtils util, string masterConnectionString, string[] slaveConnectionStrings, Func<DbConnection> connectionFactory) : base(DataType.OdbcPostgreSQL, masterConnectionString, slaveConnectionStrings)
17+
public CustomPostgreSQLAdo() : base(DataType.CustomPostgreSQL, null, null) { }
18+
public CustomPostgreSQLAdo(CommonUtils util, string masterConnectionString, string[] slaveConnectionStrings, Func<DbConnection> connectionFactory) : base(DataType.CustomPostgreSQL, masterConnectionString, slaveConnectionStrings)
1919
{
2020
base._util = util;
2121
if (connectionFactory != null)
2222
{
23-
var pool = new FreeSql.Internal.CommonProvider.DbConnectionPool(DataType.SqlServer, connectionFactory);
23+
var pool = new FreeSql.Internal.CommonProvider.DbConnectionPool(DataType.CustomPostgreSQL, connectionFactory);
2424
ConnectionString = pool.TestConnection?.ConnectionString;
2525
MasterPool = pool;
2626
return;

Providers/FreeSql.Provider.Custom/PostgreSQL/CustomPostgreSQLExpression.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,9 @@ public override string ExpressionLambdaToSqlOther(Expression exp, ExpTSC tsc)
213213
else args1 = $"array[{args1}]";
214214
if (objExp != null)
215215
{
216-
var dbinfo = _common._orm.CodeFirst.GetDbInfo(objExp.Type);
216+
var dbinfo = _common._orm.CodeFirst.GetDbInfo(
217+
objExp.IsReadonlySpanOp_Implicit() ? (objExp as MethodCallExpression).Arguments[0].Type :
218+
objExp.Type);
217219
if (dbinfo != null) args1 = $"{args1}::{dbinfo.dbtype}";
218220
}
219221
return $"({left} @> {args1})";

Providers/FreeSql.Provider.Custom/SqlServer/CustomSqlServerAdo/CustomSqlServerAdo.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,13 @@ class CustomSqlServerAdo : FreeSql.Internal.CommonProvider.AdoProvider
1414
{
1515
DbProviderFactory Factory => FreeSqlCustomAdapterGlobalExtensions.GetDbProviderFactory(_util._orm);
1616

17-
public CustomSqlServerAdo() : base(DataType.OdbcSqlServer, null, null) { }
18-
public CustomSqlServerAdo(CommonUtils util, string masterConnectionString, string[] slaveConnectionStrings, Func<DbConnection> connectionFactory) : base(DataType.OdbcSqlServer, masterConnectionString, slaveConnectionStrings)
17+
public CustomSqlServerAdo() : base(DataType.CustomSqlServer, null, null) { }
18+
public CustomSqlServerAdo(CommonUtils util, string masterConnectionString, string[] slaveConnectionStrings, Func<DbConnection> connectionFactory) : base(DataType.CustomSqlServer, masterConnectionString, slaveConnectionStrings)
1919
{
2020
base._util = util;
2121
if (connectionFactory != null)
2222
{
23-
var pool = new FreeSql.Internal.CommonProvider.DbConnectionPool(DataType.SqlServer, connectionFactory);
23+
var pool = new FreeSql.Internal.CommonProvider.DbConnectionPool(DataType.CustomSqlServer, connectionFactory);
2424
ConnectionString = pool.TestConnection?.ConnectionString;
2525
MasterPool = pool;
2626
return;

Providers/FreeSql.Provider.KingbaseES/KingbaseESExpression.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,9 @@ public override string ExpressionLambdaToSqlOther(Expression exp, ExpTSC tsc)
244244
else args1 = $"array[{args1}]";
245245
if (objExp != null)
246246
{
247-
var dbinfo = _common._orm.CodeFirst.GetDbInfo(objExp.Type);
247+
var dbinfo = _common._orm.CodeFirst.GetDbInfo(
248+
objExp.IsReadonlySpanOp_Implicit() ? (objExp as MethodCallExpression).Arguments[0].Type :
249+
objExp.Type);
248250
if (dbinfo != null) args1 = $"{args1}::{dbinfo.dbtype}";
249251
}
250252
return $"({left} @> {args1})";

Providers/FreeSql.Provider.Odbc/PostgreSQL/OdbcPostgreSQLExpression.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,9 @@ public override string ExpressionLambdaToSqlOther(Expression exp, ExpTSC tsc)
213213
else args1 = $"array[{args1}]";
214214
if (objExp != null)
215215
{
216-
var dbinfo = _common._orm.CodeFirst.GetDbInfo(objExp.Type);
216+
var dbinfo = _common._orm.CodeFirst.GetDbInfo(
217+
objExp.IsReadonlySpanOp_Implicit() ? (objExp as MethodCallExpression).Arguments[0].Type :
218+
objExp.Type);
217219
if (dbinfo != null) args1 = $"{args1}::{dbinfo.dbtype}";
218220
}
219221
return $"({left} @> {args1})";

0 commit comments

Comments
 (0)