mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-06-19 12:28:15 +08:00
suppourt ndty orm
This commit is contained in:
@ -471,6 +471,15 @@ namespace FreeSql
|
||||
expContext.Result = $"list({expContext.ParsedContent["column"]},{expContext.ParsedContent["delimiter"]})";
|
||||
return null;
|
||||
}
|
||||
public static string StringJoinGBaseWmConcatText(object column, object delimiter)
|
||||
{
|
||||
if (expContext.ParsedContent["delimiter"] == "','")
|
||||
expContext.Result = $"wm_concat_text({expContext.ParsedContent["column"]})";
|
||||
else
|
||||
throw new NotImplementedException("GBase 暂时不支持逗号以外的分割符");
|
||||
//expContext.Result = $"replace(wm_concat_text({expContext.ParsedContent["column"]}), ',', {expContext.ParsedContent["delimiter"]})";
|
||||
return null;
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
@ -418,9 +418,25 @@ public static partial class FreeSqlGlobalExtensions
|
||||
if (select._orm.CodeFirst.IsSyncStructureToLower) cteName = cteName.ToLower();
|
||||
if (select._orm.CodeFirst.IsSyncStructureToUpper) cteName = cteName.ToUpper();
|
||||
|
||||
switch (select._orm.Ado.DataType) //MySql5.6
|
||||
switch (select._orm.Ado.DataType)
|
||||
{
|
||||
case DataType.MySql:
|
||||
case DataType.GBase:
|
||||
//select t.parentid, t.subid, level
|
||||
//from a_test t
|
||||
//start with subid = '7'
|
||||
//connect by prior subid = parentid;
|
||||
var gbsb = new StringBuilder();
|
||||
var gbsbWhere = select._where.ToString();
|
||||
select._where.Clear();
|
||||
if (gbsbWhere.StartsWith(" AND ")) gbsbWhere = gbsbWhere.Remove(0, 5);
|
||||
gbsb.Append(select._tosqlAppendContent).Append(" \r\nstart with ").Append(gbsbWhere).Append(" \r\nconnect by prior ");
|
||||
if (up) gbsb.Append("a.").Append(select._commonUtils.QuoteSqlName(tbref.Columns[0].Attribute.Name)).Append(" = ").Append("a.").Append(select._commonUtils.QuoteSqlName(tbref.RefColumns[0].Attribute.Name));
|
||||
else gbsb.Append("a.").Append(select._commonUtils.QuoteSqlName(tbref.Columns[0].Attribute.Name)).Append(" = ").Append("a.").Append(select._commonUtils.QuoteSqlName(tbref.RefColumns[0].Attribute.Name));
|
||||
var gbswstr = gbsb.ToString();
|
||||
gbsb.Clear();
|
||||
select.AsAlias((_, old) => $"{old} {gbswstr}");
|
||||
return select;
|
||||
case DataType.MySql: //MySql5.6
|
||||
case DataType.OdbcMySql:
|
||||
var mysqlConnectionString = select._orm.Ado?.ConnectionString ?? select._connection?.ConnectionString ?? "";
|
||||
if (_dicMySqlVersion.TryGetValue(mysqlConnectionString, out var mysqlVersion) == false)
|
||||
@ -580,6 +596,7 @@ JOIN {select._commonUtils.QuoteSqlName(tb.DbName)} a ON cte_tbc.cte_id = a.{sele
|
||||
case DataType.OdbcOracle:
|
||||
case DataType.Dameng: //递归 WITH 子句必须具有列别名列表
|
||||
case DataType.OdbcDameng:
|
||||
case DataType.GBase:
|
||||
nsselsb.Append($"(cte_level, {(pathSelector == null ? "" : "cte_path, ")}{sql2Field.Replace("wct2.", "")})");
|
||||
break;
|
||||
}
|
||||
|
Reference in New Issue
Block a user