From e4b51e5d207ff4747636ce7a034774989cc024b5 Mon Sep 17 00:00:00 2001
From: 28810 <28810@YEXIANGQIN>
Date: Fri, 14 Aug 2020 03:06:11 +0800
Subject: [PATCH] =?UTF-8?q?-=20=E5=A2=9E=E5=8A=A0=20ISelect<2..10>=20?=
=?UTF-8?q?=E5=A4=9A=E8=A1=A8=20WithSql=20=E6=96=B9=E6=B3=95=20#413?=
=?UTF-8?q?=EF=BC=9B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
FreeSql.DbContext/FreeSql.DbContext.xml | 16 ---------------
.../SqlServer/Curd/SqlServerSelectTest.cs | 11 ++++++++++
FreeSql/Interface/Curd/ISelect/ISelect10.cs | 2 ++
FreeSql/Interface/Curd/ISelect/ISelect2.cs | 2 ++
FreeSql/Interface/Curd/ISelect/ISelect3.cs | 2 ++
FreeSql/Interface/Curd/ISelect/ISelect4.cs | 2 ++
FreeSql/Interface/Curd/ISelect/ISelect5.cs | 2 ++
FreeSql/Interface/Curd/ISelect/ISelect6.cs | 2 ++
FreeSql/Interface/Curd/ISelect/ISelect7.cs | 2 ++
FreeSql/Interface/Curd/ISelect/ISelect8.cs | 2 ++
FreeSql/Interface/Curd/ISelect/ISelect9.cs | 2 ++
.../SelectProvider/Select10Provider.cs | 20 +++++++++++++++++++
.../SelectProvider/Select1Provider.cs | 2 +-
.../SelectProvider/Select2Provider.cs | 12 +++++++++++
.../SelectProvider/Select3Provider.cs | 13 ++++++++++++
.../SelectProvider/Select4Provider.cs | 14 +++++++++++++
.../SelectProvider/Select5Provider.cs | 15 ++++++++++++++
.../SelectProvider/Select6Provider.cs | 16 +++++++++++++++
.../SelectProvider/Select7Provider.cs | 17 ++++++++++++++++
.../SelectProvider/Select8Provider.cs | 18 +++++++++++++++++
.../SelectProvider/Select9Provider.cs | 19 ++++++++++++++++++
21 files changed, 174 insertions(+), 17 deletions(-)
diff --git a/FreeSql.DbContext/FreeSql.DbContext.xml b/FreeSql.DbContext/FreeSql.DbContext.xml
index 2acb6679..5ca74890 100644
--- a/FreeSql.DbContext/FreeSql.DbContext.xml
+++ b/FreeSql.DbContext/FreeSql.DbContext.xml
@@ -130,13 +130,6 @@
清空状态数据
-
-
- 根据 lambda 条件删除数据
-
-
-
-
添加
@@ -527,14 +520,5 @@
-
-
- 批量注入 Repository,可以参考代码自行调整
-
-
-
-
-
-
diff --git a/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerSelectTest.cs b/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerSelectTest.cs
index 2c73658e..2f9398d8 100644
--- a/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerSelectTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerSelectTest.cs
@@ -1064,6 +1064,17 @@ WHERE (((cast(a.[Id] as nvarchar(100))) in (SELECT b.[Title]
.WithSql("SELECT * FROM [tb_topic22] where id = 10")
.WithSql("SELECT * FROM [tb_topic22] where id = 11")
.ToDataTable("*");
+
+ var multiWithSql = g.sqlite.Select()
+ .WithSql(
+ "select * from TestInclude_OneToManyModel1 where id=@id1",
+ "select * from TestInclude_OneToManyModel2 where model2id=@id2",
+ null,
+ new { id1 = 10, id2 = 11, id3 = 13 }
+ )
+ .LeftJoin((a, b, c) => b.model2id == a.id)
+ .LeftJoin((a, b, c) => c.model2111Idaaa == b.model2id)
+ .ToList();
}
public class TestInclude_OneToManyModel1
diff --git a/FreeSql/Interface/Curd/ISelect/ISelect10.cs b/FreeSql/Interface/Curd/ISelect/ISelect10.cs
index f041b8b1..e4cdafd6 100644
--- a/FreeSql/Interface/Curd/ISelect/ISelect10.cs
+++ b/FreeSql/Interface/Curd/ISelect/ISelect10.cs
@@ -55,5 +55,7 @@ namespace FreeSql
ISelect OrderBy(Expression> column);
ISelect OrderByDescending(Expression> column);
+
+ ISelect WithSql(string sqlT1, string sqlT2, string sqlT3, string sqlT4, string sqlT5, string sqlT6, string sqlT7, string sqlT8, string sqlT9, string sqlT10, object parms = null);
}
}
\ No newline at end of file
diff --git a/FreeSql/Interface/Curd/ISelect/ISelect2.cs b/FreeSql/Interface/Curd/ISelect/ISelect2.cs
index 3bbd6b0c..bd9692e5 100644
--- a/FreeSql/Interface/Curd/ISelect/ISelect2.cs
+++ b/FreeSql/Interface/Curd/ISelect/ISelect2.cs
@@ -55,5 +55,7 @@ namespace FreeSql
ISelect OrderBy(Expression> column);
ISelect OrderByDescending(Expression> column);
+
+ ISelect WithSql(string sqlT1, string sqlT2, object parms = null);
}
}
\ No newline at end of file
diff --git a/FreeSql/Interface/Curd/ISelect/ISelect3.cs b/FreeSql/Interface/Curd/ISelect/ISelect3.cs
index 1dc6e71e..00836d0a 100644
--- a/FreeSql/Interface/Curd/ISelect/ISelect3.cs
+++ b/FreeSql/Interface/Curd/ISelect/ISelect3.cs
@@ -55,5 +55,7 @@ namespace FreeSql
ISelect OrderBy(Expression> column);
ISelect OrderByDescending(Expression> column);
+
+ ISelect WithSql(string sqlT1, string sqlT2, string sqlT3, object parms = null);
}
}
\ No newline at end of file
diff --git a/FreeSql/Interface/Curd/ISelect/ISelect4.cs b/FreeSql/Interface/Curd/ISelect/ISelect4.cs
index 29bc56f6..8890624b 100644
--- a/FreeSql/Interface/Curd/ISelect/ISelect4.cs
+++ b/FreeSql/Interface/Curd/ISelect/ISelect4.cs
@@ -55,5 +55,7 @@ namespace FreeSql
ISelect OrderBy(Expression> column);
ISelect OrderByDescending(Expression> column);
+
+ ISelect WithSql(string sqlT1, string sqlT2, string sqlT3, string sqlT4, object parms = null);
}
}
\ No newline at end of file
diff --git a/FreeSql/Interface/Curd/ISelect/ISelect5.cs b/FreeSql/Interface/Curd/ISelect/ISelect5.cs
index a82866c7..f8d6cd7e 100644
--- a/FreeSql/Interface/Curd/ISelect/ISelect5.cs
+++ b/FreeSql/Interface/Curd/ISelect/ISelect5.cs
@@ -55,5 +55,7 @@ namespace FreeSql
ISelect OrderBy(Expression> column);
ISelect OrderByDescending(Expression> column);
+
+ ISelect WithSql(string sqlT1, string sqlT2, string sqlT3, string sqlT4, string sqlT5, object parms = null);
}
}
\ No newline at end of file
diff --git a/FreeSql/Interface/Curd/ISelect/ISelect6.cs b/FreeSql/Interface/Curd/ISelect/ISelect6.cs
index 16be4dfc..63db674e 100644
--- a/FreeSql/Interface/Curd/ISelect/ISelect6.cs
+++ b/FreeSql/Interface/Curd/ISelect/ISelect6.cs
@@ -55,5 +55,7 @@ namespace FreeSql
ISelect OrderBy(Expression> column);
ISelect OrderByDescending(Expression> column);
+
+ ISelect WithSql(string sqlT1, string sqlT2, string sqlT3, string sqlT4, string sqlT5, string sqlT6, object parms = null);
}
}
\ No newline at end of file
diff --git a/FreeSql/Interface/Curd/ISelect/ISelect7.cs b/FreeSql/Interface/Curd/ISelect/ISelect7.cs
index be8873c9..fc99ef10 100644
--- a/FreeSql/Interface/Curd/ISelect/ISelect7.cs
+++ b/FreeSql/Interface/Curd/ISelect/ISelect7.cs
@@ -55,5 +55,7 @@ namespace FreeSql
ISelect OrderBy(Expression> column);
ISelect OrderByDescending(Expression> column);
+
+ ISelect WithSql(string sqlT1, string sqlT2, string sqlT3, string sqlT4, string sqlT5, string sqlT6, string sqlT7, object parms = null);
}
}
\ No newline at end of file
diff --git a/FreeSql/Interface/Curd/ISelect/ISelect8.cs b/FreeSql/Interface/Curd/ISelect/ISelect8.cs
index a61b4955..836ee3fb 100644
--- a/FreeSql/Interface/Curd/ISelect/ISelect8.cs
+++ b/FreeSql/Interface/Curd/ISelect/ISelect8.cs
@@ -55,5 +55,7 @@ namespace FreeSql
ISelect OrderBy(Expression> column);
ISelect OrderByDescending(Expression> column);
+
+ ISelect WithSql(string sqlT1, string sqlT2, string sqlT3, string sqlT4, string sqlT5, string sqlT6, string sqlT7, string sqlT8, object parms = null);
}
}
\ No newline at end of file
diff --git a/FreeSql/Interface/Curd/ISelect/ISelect9.cs b/FreeSql/Interface/Curd/ISelect/ISelect9.cs
index ff8ff51d..8f44436d 100644
--- a/FreeSql/Interface/Curd/ISelect/ISelect9.cs
+++ b/FreeSql/Interface/Curd/ISelect/ISelect9.cs
@@ -55,5 +55,7 @@ namespace FreeSql
ISelect OrderBy(Expression> column);
ISelect OrderByDescending(Expression> column);
+
+ ISelect WithSql(string sqlT1, string sqlT2, string sqlT3, string sqlT4, string sqlT5, string sqlT6, string sqlT7, string sqlT8, string sqlT9, object parms = null);
}
}
\ No newline at end of file
diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/Select10Provider.cs b/FreeSql/Internal/CommonProvider/SelectProvider/Select10Provider.cs
index a62868c4..8f9a4398 100644
--- a/FreeSql/Internal/CommonProvider/SelectProvider/Select10Provider.cs
+++ b/FreeSql/Internal/CommonProvider/SelectProvider/Select10Provider.cs
@@ -36,6 +36,26 @@ namespace FreeSql.Internal.CommonProvider
_tables.Add(new SelectTableInfo { Table = _commonUtils.GetTableByEntity(typeof(T10)), Alias = $"SP10j", On = null, Type = SelectTableInfoType.From });
}
+ ISelect ISelect.WithSql(string sqlT1, string sqlT2, string sqlT3, string sqlT4, string sqlT5, string sqlT6, string sqlT7, string sqlT8, string sqlT9, string sqlT10, object parms)
+ {
+ this.AsTable((type, old) =>
+ {
+ if (type == _tables[0].Table?.Type) return $"( {sqlT1} )";
+ if (type == _tables[1].Table?.Type) return $"( {sqlT2} )";
+ if (type == _tables[2].Table?.Type) return $"( {sqlT3} )";
+ if (type == _tables[3].Table?.Type) return $"( {sqlT4} )";
+ if (type == _tables[4].Table?.Type) return $"( {sqlT5} )";
+ if (type == _tables[5].Table?.Type) return $"( {sqlT6} )";
+ if (type == _tables[6].Table?.Type) return $"( {sqlT7} )";
+ if (type == _tables[7].Table?.Type) return $"( {sqlT8} )";
+ if (type == _tables[8].Table?.Type) return $"( {sqlT9} )";
+ if (type == _tables[9].Table?.Type) return $"( {sqlT10} )";
+ return old;
+ });
+ if (parms != null) _params.AddRange(_commonUtils.GetDbParamtersByObject($"{sqlT1};\r\n{sqlT2};\r\n{sqlT3};\r\n{sqlT4};\r\n{sqlT5};\r\n{sqlT6};\r\n{sqlT7};\r\n{sqlT8};\r\n{sqlT9};\r\n{sqlT10}", parms));
+ return this;
+ }
+
double ISelect.Avg(Expression> column)
{
if (column == null) return 0;
diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/Select1Provider.cs b/FreeSql/Internal/CommonProvider/SelectProvider/Select1Provider.cs
index 4519bad1..f4a18423 100644
--- a/FreeSql/Internal/CommonProvider/SelectProvider/Select1Provider.cs
+++ b/FreeSql/Internal/CommonProvider/SelectProvider/Select1Provider.cs
@@ -260,7 +260,7 @@ namespace FreeSql.Internal.CommonProvider
{
this.AsTable((type, old) =>
{
- if (type == _tables.First().Table?.Type) return $"( {sql} )";
+ if (type == _tables[0].Table?.Type && string.IsNullOrEmpty(sql) == false) return $"( {sql} )";
return old;
});
if (parms != null) _params.AddRange(_commonUtils.GetDbParamtersByObject(sql, parms));
diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/Select2Provider.cs b/FreeSql/Internal/CommonProvider/SelectProvider/Select2Provider.cs
index 0bf4d0fc..79583b79 100644
--- a/FreeSql/Internal/CommonProvider/SelectProvider/Select2Provider.cs
+++ b/FreeSql/Internal/CommonProvider/SelectProvider/Select2Provider.cs
@@ -20,6 +20,18 @@ namespace FreeSql.Internal.CommonProvider
_tables.Add(new SelectTableInfo { Table = _commonUtils.GetTableByEntity(typeof(T2)), Alias = $"SP10b", On = null, Type = SelectTableInfoType.From });
}
+ ISelect ISelect.WithSql(string sqlT1, string sqlT2, object parms)
+ {
+ this.AsTable((type, old) =>
+ {
+ if (type == _tables[0].Table?.Type && string.IsNullOrEmpty(sqlT1) == false) return $"( {sqlT1} )";
+ if (type == _tables[1].Table?.Type && string.IsNullOrEmpty(sqlT2) == false) return $"( {sqlT2} )";
+ return old;
+ });
+ if (parms != null) _params.AddRange(_commonUtils.GetDbParamtersByObject($"{sqlT1};\r\n{sqlT2}", parms));
+ return this;
+ }
+
double ISelect.Avg(Expression> column)
{
if (column == null) return default(double);
diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/Select3Provider.cs b/FreeSql/Internal/CommonProvider/SelectProvider/Select3Provider.cs
index ebded494..1ccd1d5c 100644
--- a/FreeSql/Internal/CommonProvider/SelectProvider/Select3Provider.cs
+++ b/FreeSql/Internal/CommonProvider/SelectProvider/Select3Provider.cs
@@ -22,6 +22,19 @@ namespace FreeSql.Internal.CommonProvider
_tables.Add(new SelectTableInfo { Table = _commonUtils.GetTableByEntity(typeof(T3)), Alias = $"SP10c", On = null, Type = SelectTableInfoType.From });
}
+ ISelect ISelect.WithSql(string sqlT1, string sqlT2, string sqlT3, object parms)
+ {
+ this.AsTable((type, old) =>
+ {
+ if (type == _tables[0].Table?.Type && string.IsNullOrEmpty(sqlT1) == false) return $"( {sqlT1} )";
+ if (type == _tables[1].Table?.Type && string.IsNullOrEmpty(sqlT2) == false) return $"( {sqlT2} )";
+ if (type == _tables[2].Table?.Type && string.IsNullOrEmpty(sqlT3) == false) return $"( {sqlT3} )";
+ return old;
+ });
+ if (parms != null) _params.AddRange(_commonUtils.GetDbParamtersByObject($"{sqlT1};\r\n{sqlT2};\r\n{sqlT3}", parms));
+ return this;
+ }
+
double ISelect.Avg(Expression> column)
{
if (column == null) return default(double);
diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/Select4Provider.cs b/FreeSql/Internal/CommonProvider/SelectProvider/Select4Provider.cs
index 2824aa01..c97b75b7 100644
--- a/FreeSql/Internal/CommonProvider/SelectProvider/Select4Provider.cs
+++ b/FreeSql/Internal/CommonProvider/SelectProvider/Select4Provider.cs
@@ -24,6 +24,20 @@ namespace FreeSql.Internal.CommonProvider
_tables.Add(new SelectTableInfo { Table = _commonUtils.GetTableByEntity(typeof(T4)), Alias = $"SP10d", On = null, Type = SelectTableInfoType.From });
}
+ ISelect ISelect.WithSql(string sqlT1, string sqlT2, string sqlT3, string sqlT4, object parms)
+ {
+ this.AsTable((type, old) =>
+ {
+ if (type == _tables[0].Table?.Type && string.IsNullOrEmpty(sqlT1) == false) return $"( {sqlT1} )";
+ if (type == _tables[1].Table?.Type && string.IsNullOrEmpty(sqlT2) == false) return $"( {sqlT2} )";
+ if (type == _tables[2].Table?.Type && string.IsNullOrEmpty(sqlT3) == false) return $"( {sqlT3} )";
+ if (type == _tables[3].Table?.Type && string.IsNullOrEmpty(sqlT4) == false) return $"( {sqlT4} )";
+ return old;
+ });
+ if (parms != null) _params.AddRange(_commonUtils.GetDbParamtersByObject($"{sqlT1};\r\n{sqlT2};\r\n{sqlT3};\r\n{sqlT4}", parms));
+ return this;
+ }
+
double ISelect.Avg(Expression> column)
{
if (column == null) return default(double);
diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/Select5Provider.cs b/FreeSql/Internal/CommonProvider/SelectProvider/Select5Provider.cs
index 1278e64f..27d8a023 100644
--- a/FreeSql/Internal/CommonProvider/SelectProvider/Select5Provider.cs
+++ b/FreeSql/Internal/CommonProvider/SelectProvider/Select5Provider.cs
@@ -26,6 +26,21 @@ namespace FreeSql.Internal.CommonProvider
_tables.Add(new SelectTableInfo { Table = _commonUtils.GetTableByEntity(typeof(T5)), Alias = $"SP10e", On = null, Type = SelectTableInfoType.From });
}
+ ISelect ISelect.WithSql(string sqlT1, string sqlT2, string sqlT3, string sqlT4, string sqlT5, object parms)
+ {
+ this.AsTable((type, old) =>
+ {
+ if (type == _tables[0].Table?.Type && string.IsNullOrEmpty(sqlT1) == false) return $"( {sqlT1} )";
+ if (type == _tables[1].Table?.Type && string.IsNullOrEmpty(sqlT2) == false) return $"( {sqlT2} )";
+ if (type == _tables[2].Table?.Type && string.IsNullOrEmpty(sqlT3) == false) return $"( {sqlT3} )";
+ if (type == _tables[3].Table?.Type && string.IsNullOrEmpty(sqlT4) == false) return $"( {sqlT4} )";
+ if (type == _tables[4].Table?.Type && string.IsNullOrEmpty(sqlT5) == false) return $"( {sqlT5} )";
+ return old;
+ });
+ if (parms != null) _params.AddRange(_commonUtils.GetDbParamtersByObject($"{sqlT1};\r\n{sqlT2};\r\n{sqlT3};\r\n{sqlT4};\r\n{sqlT5}", parms));
+ return this;
+ }
+
double ISelect.Avg(Expression> column)
{
if (column == null) return default(double);
diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/Select6Provider.cs b/FreeSql/Internal/CommonProvider/SelectProvider/Select6Provider.cs
index f4b9caa5..b5fb37c8 100644
--- a/FreeSql/Internal/CommonProvider/SelectProvider/Select6Provider.cs
+++ b/FreeSql/Internal/CommonProvider/SelectProvider/Select6Provider.cs
@@ -28,6 +28,22 @@ namespace FreeSql.Internal.CommonProvider
_tables.Add(new SelectTableInfo { Table = _commonUtils.GetTableByEntity(typeof(T6)), Alias = $"SP10f", On = null, Type = SelectTableInfoType.From });
}
+ ISelect ISelect.WithSql(string sqlT1, string sqlT2, string sqlT3, string sqlT4, string sqlT5, string sqlT6, object parms)
+ {
+ this.AsTable((type, old) =>
+ {
+ if (type == _tables[0].Table?.Type && string.IsNullOrEmpty(sqlT1) == false) return $"( {sqlT1} )";
+ if (type == _tables[1].Table?.Type && string.IsNullOrEmpty(sqlT2) == false) return $"( {sqlT2} )";
+ if (type == _tables[2].Table?.Type && string.IsNullOrEmpty(sqlT3) == false) return $"( {sqlT3} )";
+ if (type == _tables[3].Table?.Type && string.IsNullOrEmpty(sqlT4) == false) return $"( {sqlT4} )";
+ if (type == _tables[4].Table?.Type && string.IsNullOrEmpty(sqlT5) == false) return $"( {sqlT5} )";
+ if (type == _tables[5].Table?.Type && string.IsNullOrEmpty(sqlT6) == false) return $"( {sqlT6} )";
+ return old;
+ });
+ if (parms != null) _params.AddRange(_commonUtils.GetDbParamtersByObject($"{sqlT1};\r\n{sqlT2};\r\n{sqlT3};\r\n{sqlT4};\r\n{sqlT5};\r\n{sqlT6}", parms));
+ return this;
+ }
+
double ISelect.Avg(Expression> column)
{
if (column == null) return default(double);
diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/Select7Provider.cs b/FreeSql/Internal/CommonProvider/SelectProvider/Select7Provider.cs
index b094c500..52e1c4fb 100644
--- a/FreeSql/Internal/CommonProvider/SelectProvider/Select7Provider.cs
+++ b/FreeSql/Internal/CommonProvider/SelectProvider/Select7Provider.cs
@@ -30,6 +30,23 @@ namespace FreeSql.Internal.CommonProvider
_tables.Add(new SelectTableInfo { Table = _commonUtils.GetTableByEntity(typeof(T7)), Alias = $"SP10g", On = null, Type = SelectTableInfoType.From });
}
+ ISelect ISelect.WithSql(string sqlT1, string sqlT2, string sqlT3, string sqlT4, string sqlT5, string sqlT6, string sqlT7, object parms)
+ {
+ this.AsTable((type, old) =>
+ {
+ if (type == _tables[0].Table?.Type && string.IsNullOrEmpty(sqlT1) == false) return $"( {sqlT1} )";
+ if (type == _tables[1].Table?.Type && string.IsNullOrEmpty(sqlT2) == false) return $"( {sqlT2} )";
+ if (type == _tables[2].Table?.Type && string.IsNullOrEmpty(sqlT3) == false) return $"( {sqlT3} )";
+ if (type == _tables[3].Table?.Type && string.IsNullOrEmpty(sqlT4) == false) return $"( {sqlT4} )";
+ if (type == _tables[4].Table?.Type && string.IsNullOrEmpty(sqlT5) == false) return $"( {sqlT5} )";
+ if (type == _tables[5].Table?.Type && string.IsNullOrEmpty(sqlT6) == false) return $"( {sqlT6} )";
+ if (type == _tables[6].Table?.Type && string.IsNullOrEmpty(sqlT7) == false) return $"( {sqlT7} )";
+ return old;
+ });
+ if (parms != null) _params.AddRange(_commonUtils.GetDbParamtersByObject($"{sqlT1};\r\n{sqlT2};\r\n{sqlT3};\r\n{sqlT4};\r\n{sqlT5};\r\n{sqlT6};\r\n{sqlT7}", parms));
+ return this;
+ }
+
double ISelect.Avg(Expression> column)
{
if (column == null) return default(double);
diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/Select8Provider.cs b/FreeSql/Internal/CommonProvider/SelectProvider/Select8Provider.cs
index fbc2ed51..da9c40a5 100644
--- a/FreeSql/Internal/CommonProvider/SelectProvider/Select8Provider.cs
+++ b/FreeSql/Internal/CommonProvider/SelectProvider/Select8Provider.cs
@@ -32,6 +32,24 @@ namespace FreeSql.Internal.CommonProvider
_tables.Add(new SelectTableInfo { Table = _commonUtils.GetTableByEntity(typeof(T8)), Alias = $"SP10h", On = null, Type = SelectTableInfoType.From });
}
+ ISelect ISelect.WithSql(string sqlT1, string sqlT2, string sqlT3, string sqlT4, string sqlT5, string sqlT6, string sqlT7, string sqlT8, object parms)
+ {
+ this.AsTable((type, old) =>
+ {
+ if (type == _tables[0].Table?.Type && string.IsNullOrEmpty(sqlT1) == false) return $"( {sqlT1} )";
+ if (type == _tables[1].Table?.Type && string.IsNullOrEmpty(sqlT2) == false) return $"( {sqlT2} )";
+ if (type == _tables[2].Table?.Type && string.IsNullOrEmpty(sqlT3) == false) return $"( {sqlT3} )";
+ if (type == _tables[3].Table?.Type && string.IsNullOrEmpty(sqlT4) == false) return $"( {sqlT4} )";
+ if (type == _tables[4].Table?.Type && string.IsNullOrEmpty(sqlT5) == false) return $"( {sqlT5} )";
+ if (type == _tables[5].Table?.Type && string.IsNullOrEmpty(sqlT6) == false) return $"( {sqlT6} )";
+ if (type == _tables[6].Table?.Type && string.IsNullOrEmpty(sqlT7) == false) return $"( {sqlT7} )";
+ if (type == _tables[7].Table?.Type && string.IsNullOrEmpty(sqlT8) == false) return $"( {sqlT8} )";
+ return old;
+ });
+ if (parms != null) _params.AddRange(_commonUtils.GetDbParamtersByObject($"{sqlT1};\r\n{sqlT2};\r\n{sqlT3};\r\n{sqlT4};\r\n{sqlT5};\r\n{sqlT6};\r\n{sqlT7};\r\n{sqlT8}", parms));
+ return this;
+ }
+
double ISelect.Avg(Expression> column)
{
if (column == null) return default(double);
diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/Select9Provider.cs b/FreeSql/Internal/CommonProvider/SelectProvider/Select9Provider.cs
index 021298f4..5bfc03a1 100644
--- a/FreeSql/Internal/CommonProvider/SelectProvider/Select9Provider.cs
+++ b/FreeSql/Internal/CommonProvider/SelectProvider/Select9Provider.cs
@@ -34,6 +34,25 @@ namespace FreeSql.Internal.CommonProvider
_tables.Add(new SelectTableInfo { Table = _commonUtils.GetTableByEntity(typeof(T9)), Alias = $"SP10i", On = null, Type = SelectTableInfoType.From });
}
+ ISelect ISelect.WithSql(string sqlT1, string sqlT2, string sqlT3, string sqlT4, string sqlT5, string sqlT6, string sqlT7, string sqlT8, string sqlT9, object parms)
+ {
+ this.AsTable((type, old) =>
+ {
+ if (type == _tables[0].Table?.Type && string.IsNullOrEmpty(sqlT1) == false) return $"( {sqlT1} )";
+ if (type == _tables[1].Table?.Type && string.IsNullOrEmpty(sqlT2) == false) return $"( {sqlT2} )";
+ if (type == _tables[2].Table?.Type && string.IsNullOrEmpty(sqlT3) == false) return $"( {sqlT3} )";
+ if (type == _tables[3].Table?.Type && string.IsNullOrEmpty(sqlT4) == false) return $"( {sqlT4} )";
+ if (type == _tables[4].Table?.Type && string.IsNullOrEmpty(sqlT5) == false) return $"( {sqlT5} )";
+ if (type == _tables[5].Table?.Type && string.IsNullOrEmpty(sqlT6) == false) return $"( {sqlT6} )";
+ if (type == _tables[6].Table?.Type && string.IsNullOrEmpty(sqlT7) == false) return $"( {sqlT7} )";
+ if (type == _tables[7].Table?.Type && string.IsNullOrEmpty(sqlT8) == false) return $"( {sqlT8} )";
+ if (type == _tables[8].Table?.Type && string.IsNullOrEmpty(sqlT9) == false) return $"( {sqlT9} )";
+ return old;
+ });
+ if (parms != null) _params.AddRange(_commonUtils.GetDbParamtersByObject($"{sqlT1};\r\n{sqlT2};\r\n{sqlT3};\r\n{sqlT4};\r\n{sqlT5};\r\n{sqlT6};\r\n{sqlT7};\r\n{sqlT8};\r\n{sqlT9}", parms));
+ return this;
+ }
+
double ISelect.Avg(Expression> column)
{
if (column == null) return default(double);