From e91f1157d8cac02a5aa69e8bf98c4a942023b766 Mon Sep 17 00:00:00 2001
From: 2881099 <2881099@qq.com>
Date: Sun, 25 Sep 2022 00:16:15 +0800
Subject: [PATCH] =?UTF-8?q?-=20=E4=BC=98=E5=8C=96=20WithTempQuery=20?=
=?UTF-8?q?=E5=A4=9A=E5=AF=B9=E8=B1=A1=E9=80=89=E6=8B=A9=E5=90=8C=E5=88=AB?=
=?UTF-8?q?=E5=90=8D=E9=97=AE=E9=A2=98=EF=BC=9B#1192?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
FreeSql.DbContext/FreeSql.DbContext.xml | 9 ++
FreeSql.Tests/FreeSql.Tests/Issues/1237.cs | 2 +-
.../KingbaseES/Curd/KingbaseESSelectTest.cs | 126 +++++++++---------
.../Curd/SqlServerSelectWithTempQueryTest.cs | 91 +++++++++++++
FreeSql.Tests/FreeSql.Tests/UnitTest1.cs | 12 +-
FreeSql.Tests/FreeSql.Tests/g.cs | 6 +-
FreeSql/Internal/CommonExpression.cs | 6 +-
.../SelectProvider/Select0Provider.cs | 30 +++++
.../SelectProvider/SelectGroupingProvider.cs | 1 +
FreeSql/Internal/UtilsExpressionTree.cs | 4 +-
README.zh-CN.md | 2 -
11 files changed, 210 insertions(+), 79 deletions(-)
diff --git a/FreeSql.DbContext/FreeSql.DbContext.xml b/FreeSql.DbContext/FreeSql.DbContext.xml
index 594fbad3..537315e2 100644
--- a/FreeSql.DbContext/FreeSql.DbContext.xml
+++ b/FreeSql.DbContext/FreeSql.DbContext.xml
@@ -733,6 +733,15 @@
+
+
+ 根据Assembly扫描所有继承IEntityTypeConfiguration<T>的配置类
+
+
+
+
+
+
创建普通数据上下文档对象
diff --git a/FreeSql.Tests/FreeSql.Tests/Issues/1237.cs b/FreeSql.Tests/FreeSql.Tests/Issues/1237.cs
index bacd83be..a18e6437 100644
--- a/FreeSql.Tests/FreeSql.Tests/Issues/1237.cs
+++ b/FreeSql.Tests/FreeSql.Tests/Issues/1237.cs
@@ -36,7 +36,7 @@ ORDER BY b.""Name"", b.""ID""", people1);
.ToSql();
Assert.Equal(@"SELECT *
FROM (
- SELECT replace(replace(a.""Name"", ' ', ''), ' ', ''), a.""CSNY""
+ SELECT replace(replace(a.""Name"", ' ', ''), ' ', '') ""xm_new"", a.""CSNY"" ""csny""
FROM ""people_issues_1237"" a
GROUP BY replace(replace(a.""Name"", ' ', ''), ' ', ''), a.""CSNY""
HAVING (count(1) > 1) ) a
diff --git a/FreeSql.Tests/FreeSql.Tests/KingbaseES/Curd/KingbaseESSelectTest.cs b/FreeSql.Tests/FreeSql.Tests/KingbaseES/Curd/KingbaseESSelectTest.cs
index 1ccbf5f6..ef281d2e 100644
--- a/FreeSql.Tests/FreeSql.Tests/KingbaseES/Curd/KingbaseESSelectTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests/KingbaseES/Curd/KingbaseESSelectTest.cs
@@ -17,7 +17,7 @@ namespace FreeSql.Tests.KingbaseES
[Column(IsIdentity = true, IsPrimary = true)]
public int Id { get; set; }
public int Clicks { get; set; }
- public int TypeGuid { get; set; }
+ public int TypeGuid223 { get; set; }
public TestTypeInfo Type { get; set; }
public string Title { get; set; }
public DateTime CreateTime { get; set; }
@@ -168,10 +168,10 @@ namespace FreeSql.Tests.KingbaseES
var testDto3 = select.Limit(10).ToList(a => new TestDto { });
var testDto4 = select.Limit(10).ToList(a => new TestDto() { });
- var testDto11 = select.LeftJoin(a => a.Type.Guid == a.TypeGuid).Limit(10).ToList(a => new TestDto { id = a.Id, name = a.Title });
- var testDto22 = select.LeftJoin(a => a.Type.Guid == a.TypeGuid).Limit(10).ToList(a => new TestDto());
- var testDto33 = select.LeftJoin(a => a.Type.Guid == a.TypeGuid).Limit(10).ToList(a => new TestDto { });
- var testDto44 = select.LeftJoin(a => a.Type.Guid == a.TypeGuid).Limit(10).ToList(a => new TestDto() { });
+ var testDto11 = select.LeftJoin(a => a.Type.Guid == a.TypeGuid223).Limit(10).ToList(a => new TestDto { id = a.Id, name = a.Title });
+ var testDto22 = select.LeftJoin(a => a.Type.Guid == a.TypeGuid223).Limit(10).ToList(a => new TestDto());
+ var testDto33 = select.LeftJoin(a => a.Type.Guid == a.TypeGuid223).Limit(10).ToList(a => new TestDto { });
+ var testDto44 = select.LeftJoin(a => a.Type.Guid == a.TypeGuid223).Limit(10).ToList(a => new TestDto() { });
var testDto211 = select.Limit(10).ToList(a => new TestDto2(a.Id, a.Title));
var testDto212 = select.Limit(10).ToList(a => new TestDto2());
@@ -179,11 +179,11 @@ namespace FreeSql.Tests.KingbaseES
var testDto214 = select.Limit(10).ToList(a => new TestDto2() { });
var testDto215 = select.Limit(10).ToList();
- var testDto2211 = select.LeftJoin(a => a.Type.Guid == a.TypeGuid).Limit(10).ToList(a => new TestDto2(a.Id, a.Title));
- var testDto2222 = select.LeftJoin(a => a.Type.Guid == a.TypeGuid).Limit(10).ToList(a => new TestDto2());
- var testDto2233 = select.LeftJoin(a => a.Type.Guid == a.TypeGuid).Limit(10).ToList(a => new TestDto2 { });
- var testDto2244 = select.LeftJoin(a => a.Type.Guid == a.TypeGuid).Limit(10).ToList(a => new TestDto2() { });
- var testDto2255 = select.LeftJoin(a => a.Type.Guid == a.TypeGuid).Limit(10).ToList();
+ var testDto2211 = select.LeftJoin(a => a.Type.Guid == a.TypeGuid223).Limit(10).ToList(a => new TestDto2(a.Id, a.Title));
+ var testDto2222 = select.LeftJoin(a => a.Type.Guid == a.TypeGuid223).Limit(10).ToList(a => new TestDto2());
+ var testDto2233 = select.LeftJoin(a => a.Type.Guid == a.TypeGuid223).Limit(10).ToList(a => new TestDto2 { });
+ var testDto2244 = select.LeftJoin(a => a.Type.Guid == a.TypeGuid223).Limit(10).ToList(a => new TestDto2() { });
+ var testDto2255 = select.LeftJoin(a => a.Type.Guid == a.TypeGuid223).Limit(10).ToList();
g.kingbaseES.Insert().AppendData(new TestGuidIdToList()).ExecuteAffrows();
var testGuidId5 = g.kingbaseES.Select().ToList();
@@ -276,7 +276,7 @@ namespace FreeSql.Tests.KingbaseES
var sql2222Tolist = sql2222.ToList();
var collectionSelect = select.Where(a =>
- a.Type.Guid == a.TypeGuid &&
+ a.Type.Guid == a.TypeGuid223 &&
a.Type.Parent.Id == a.Type.ParentId &&
a.Type.Parent.Types.AsSelect().Where(b => b.Name == a.Title).Any(b => b.ParentId == a.Type.Parent.Id)
);
@@ -310,14 +310,14 @@ namespace FreeSql.Tests.KingbaseES
public void From()
{
var query2 = select.From((s, b) => s
- .LeftJoin(a => a.TypeGuid == b.Guid)
+ .LeftJoin(a => a.TypeGuid223 == b.Guid)
);
var sql2 = query2.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", b.\"GUID\", b.\"PARENTID\", b.\"NAME\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a LEFT JOIN \"TESTTYPEINFO\" b ON a.\"TYPEGUID\" = b.\"GUID\"", sql2);
query2.ToList();
var query3 = select.From((s, b, c) => s
- .LeftJoin(a => a.TypeGuid == b.Guid)
+ .LeftJoin(a => a.TypeGuid223 == b.Guid)
.LeftJoin(a => b.ParentId == c.Id)
);
var sql3 = query3.ToSql().Replace("\r\n", "");
@@ -328,47 +328,47 @@ namespace FreeSql.Tests.KingbaseES
public void LeftJoin()
{
//����е�������a.Type��a.Type.Parent ���ǵ�������
- var query = select.LeftJoin(a => a.Type.Guid == a.TypeGuid);
+ var query = select.LeftJoin(a => a.Type.Guid == a.TypeGuid223);
var sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a__Type.\"GUID\", a__Type.\"PARENTID\", a__Type.\"NAME\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a LEFT JOIN \"TESTTYPEINFO\" a__Type ON a__Type.\"GUID\" = a.\"TYPEGUID\"", sql);
query.ToList();
- query = select.LeftJoin(a => a.Type.Guid == a.TypeGuid && a.Type.Name == "xxx");
+ query = select.LeftJoin(a => a.Type.Guid == a.TypeGuid223 && a.Type.Name == "xxx");
sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a__Type.\"GUID\", a__Type.\"PARENTID\", a__Type.\"NAME\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a LEFT JOIN \"TESTTYPEINFO\" a__Type ON a__Type.\"GUID\" = a.\"TYPEGUID\" AND a__Type.\"NAME\" = 'xxx'", sql);
query.ToList();
- query = select.LeftJoin(a => a.Type.Guid == a.TypeGuid && a.Type.Name == "xxx").Where(a => a.Type.Parent.Id == 10);
+ query = select.LeftJoin(a => a.Type.Guid == a.TypeGuid223 && a.Type.Name == "xxx").Where(a => a.Type.Parent.Id == 10);
sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a__Type.\"GUID\", a__Type.\"PARENTID\", a__Type.\"NAME\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a LEFT JOIN \"TESTTYPEINFO\" a__Type ON a__Type.\"GUID\" = a.\"TYPEGUID\" AND a__Type.\"NAME\" = 'xxx' LEFT JOIN \"TESTTYPEPARENTINFO\" a__Type__Parent ON a__Type__Parent.\"ID\" = a__Type.\"PARENTID\" WHERE (a__Type__Parent.\"ID\" = 10)", sql);
query.ToList();
//���û�е�������
- query = select.LeftJoin((a, b) => b.Guid == a.TypeGuid);
+ query = select.LeftJoin((a, b) => b.Guid == a.TypeGuid223);
sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", b.\"GUID\", b.\"PARENTID\", b.\"NAME\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a LEFT JOIN \"TESTTYPEINFO\" b ON b.\"GUID\" = a.\"TYPEGUID\"", sql);
query.ToList();
- query = select.LeftJoin((a, b) => b.Guid == a.TypeGuid && b.Name == "xxx");
+ query = select.LeftJoin((a, b) => b.Guid == a.TypeGuid223 && b.Name == "xxx");
sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", b.\"GUID\", b.\"PARENTID\", b.\"NAME\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a LEFT JOIN \"TESTTYPEINFO\" b ON b.\"GUID\" = a.\"TYPEGUID\" AND b.\"NAME\" = 'xxx'", sql);
query.ToList();
- query = select.LeftJoin((a, a__Type) => a__Type.Guid == a.TypeGuid && a__Type.Name == "xxx").Where(a => a.Type.Parent.Id == 10);
+ query = select.LeftJoin((a, a__Type) => a__Type.Guid == a.TypeGuid223 && a__Type.Name == "xxx").Where(a => a.Type.Parent.Id == 10);
sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a__Type.\"GUID\", a__Type.\"PARENTID\", a__Type.\"NAME\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a LEFT JOIN \"TESTTYPEINFO\" a__Type ON a__Type.\"GUID\" = a.\"TYPEGUID\" AND a__Type.\"NAME\" = 'xxx' LEFT JOIN \"TESTTYPEPARENTINFO\" a__Type__Parent ON a__Type__Parent.\"ID\" = a__Type.\"PARENTID\" WHERE (a__Type__Parent.\"ID\" = 10)", sql);
query.ToList();
//�������
query = select
- .LeftJoin(a => a.Type.Guid == a.TypeGuid)
+ .LeftJoin(a => a.Type.Guid == a.TypeGuid223)
.LeftJoin(a => a.Type.Parent.Id == a.Type.ParentId);
sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a__Type.\"GUID\", a__Type.\"PARENTID\", a__Type.\"NAME\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a LEFT JOIN \"TESTTYPEINFO\" a__Type ON a__Type.\"GUID\" = a.\"TYPEGUID\" LEFT JOIN \"TESTTYPEPARENTINFO\" a__Type__Parent ON a__Type__Parent.\"ID\" = a__Type.\"PARENTID\"", sql);
query.ToList();
query = select
- .LeftJoin((a, a__Type) => a__Type.Guid == a.TypeGuid)
+ .LeftJoin((a, a__Type) => a__Type.Guid == a.TypeGuid223)
.LeftJoin((a, c) => c.Id == a.Type.ParentId);
sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a__Type.\"GUID\", a__Type.\"PARENTID\", a__Type.\"NAME\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a LEFT JOIN \"TESTTYPEINFO\" a__Type ON a__Type.\"GUID\" = a.\"TYPEGUID\" LEFT JOIN \"TESTTYPEPARENTINFO\" c ON c.\"ID\" = a__Type.\"PARENTID\"", sql);
@@ -376,7 +376,7 @@ namespace FreeSql.Tests.KingbaseES
//���û�е�������b��c������ϵ
var query2 = select.From((s, b, c) => s
- .LeftJoin(a => a.TypeGuid == b.Guid)
+ .LeftJoin(a => a.TypeGuid223 == b.Guid)
.LeftJoin(a => b.ParentId == c.Id));
sql = query2.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", b.\"GUID\", b.\"PARENTID\", b.\"NAME\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a LEFT JOIN \"TESTTYPEINFO\" b ON a.\"TYPEGUID\" = b.\"GUID\" LEFT JOIN \"TESTTYPEPARENTINFO\" c ON b.\"PARENTID\" = c.\"ID\"", sql);
@@ -392,47 +392,49 @@ namespace FreeSql.Tests.KingbaseES
public void InnerJoin()
{
//����е�������a.Type��a.Type.Parent ���ǵ�������
- var query = select.InnerJoin(a => a.Type.Guid == a.TypeGuid);
+ var tb = g.kingbaseES.CodeFirst.GetTableByEntity(typeof(Topic));
+
+ var query = select.InnerJoin(a => a.Type.Guid == a.TypeGuid223);
var sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a__Type.\"GUID\", a__Type.\"PARENTID\", a__Type.\"NAME\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a INNER JOIN \"TESTTYPEINFO\" a__Type ON a__Type.\"GUID\" = a.\"TYPEGUID\"", sql);
query.ToList();
- query = select.InnerJoin(a => a.Type.Guid == a.TypeGuid && a.Type.Name == "xxx");
+ query = select.InnerJoin(a => a.Type.Guid == a.TypeGuid223 && a.Type.Name == "xxx");
sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a__Type.\"GUID\", a__Type.\"PARENTID\", a__Type.\"NAME\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a INNER JOIN \"TESTTYPEINFO\" a__Type ON a__Type.\"GUID\" = a.\"TYPEGUID\" AND a__Type.\"NAME\" = 'xxx'", sql);
query.ToList();
- query = select.InnerJoin(a => a.Type.Guid == a.TypeGuid && a.Type.Name == "xxx").Where(a => a.Type.Parent.Id == 10);
+ query = select.InnerJoin(a => a.Type.Guid == a.TypeGuid223 && a.Type.Name == "xxx").Where(a => a.Type.Parent.Id == 10);
sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a__Type.\"GUID\", a__Type.\"PARENTID\", a__Type.\"NAME\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a INNER JOIN \"TESTTYPEINFO\" a__Type ON a__Type.\"GUID\" = a.\"TYPEGUID\" AND a__Type.\"NAME\" = 'xxx' LEFT JOIN \"TESTTYPEPARENTINFO\" a__Type__Parent ON a__Type__Parent.\"ID\" = a__Type.\"PARENTID\" WHERE (a__Type__Parent.\"ID\" = 10)", sql);
query.ToList();
//���û�е�������
- query = select.InnerJoin((a, b) => b.Guid == a.TypeGuid);
+ query = select.InnerJoin((a, b) => b.Guid == a.TypeGuid223);
sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", b.\"GUID\", b.\"PARENTID\", b.\"NAME\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a INNER JOIN \"TESTTYPEINFO\" b ON b.\"GUID\" = a.\"TYPEGUID\"", sql);
query.ToList();
- query = select.InnerJoin((a, b) => b.Guid == a.TypeGuid && b.Name == "xxx");
+ query = select.InnerJoin((a, b) => b.Guid == a.TypeGuid223 && b.Name == "xxx");
sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", b.\"GUID\", b.\"PARENTID\", b.\"NAME\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a INNER JOIN \"TESTTYPEINFO\" b ON b.\"GUID\" = a.\"TYPEGUID\" AND b.\"NAME\" = 'xxx'", sql);
query.ToList();
- query = select.InnerJoin((a, a__Type) => a__Type.Guid == a.TypeGuid && a__Type.Name == "xxx").Where(a => a.Type.Parent.Id == 10);
+ query = select.InnerJoin((a, a__Type) => a__Type.Guid == a.TypeGuid223 && a__Type.Name == "xxx").Where(a => a.Type.Parent.Id == 10);
sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a__Type.\"GUID\", a__Type.\"PARENTID\", a__Type.\"NAME\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a INNER JOIN \"TESTTYPEINFO\" a__Type ON a__Type.\"GUID\" = a.\"TYPEGUID\" AND a__Type.\"NAME\" = 'xxx' LEFT JOIN \"TESTTYPEPARENTINFO\" a__Type__Parent ON a__Type__Parent.\"ID\" = a__Type.\"PARENTID\" WHERE (a__Type__Parent.\"ID\" = 10)", sql);
query.ToList();
//�������
query = select
- .InnerJoin(a => a.Type.Guid == a.TypeGuid)
+ .InnerJoin(a => a.Type.Guid == a.TypeGuid223)
.InnerJoin(a => a.Type.Parent.Id == a.Type.ParentId);
sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a__Type.\"GUID\", a__Type.\"PARENTID\", a__Type.\"NAME\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a INNER JOIN \"TESTTYPEINFO\" a__Type ON a__Type.\"GUID\" = a.\"TYPEGUID\" INNER JOIN \"TESTTYPEPARENTINFO\" a__Type__Parent ON a__Type__Parent.\"ID\" = a__Type.\"PARENTID\"", sql);
query.ToList();
query = select
- .InnerJoin((a, a__Type) => a__Type.Guid == a.TypeGuid)
+ .InnerJoin((a, a__Type) => a__Type.Guid == a.TypeGuid223)
.InnerJoin((a, c) => c.Id == a.Type.ParentId);
sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a__Type.\"GUID\", a__Type.\"PARENTID\", a__Type.\"NAME\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a INNER JOIN \"TESTTYPEINFO\" a__Type ON a__Type.\"GUID\" = a.\"TYPEGUID\" INNER JOIN \"TESTTYPEPARENTINFO\" c ON c.\"ID\" = a__Type.\"PARENTID\"", sql);
@@ -440,7 +442,7 @@ namespace FreeSql.Tests.KingbaseES
//���û�е�������b��c������ϵ
var query2 = select.From((s, b, c) => s
- .InnerJoin(a => a.TypeGuid == b.Guid)
+ .InnerJoin(a => a.TypeGuid223 == b.Guid)
.InnerJoin(a => b.ParentId == c.Id));
sql = query2.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", b.\"GUID\", b.\"PARENTID\", b.\"NAME\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a INNER JOIN \"TESTTYPEINFO\" b ON a.\"TYPEGUID\" = b.\"GUID\" INNER JOIN \"TESTTYPEPARENTINFO\" c ON b.\"PARENTID\" = c.\"ID\"", sql);
@@ -456,47 +458,47 @@ namespace FreeSql.Tests.KingbaseES
public void RightJoin()
{
//����е�������a.Type��a.Type.Parent ���ǵ�������
- var query = select.RightJoin(a => a.Type.Guid == a.TypeGuid);
+ var query = select.RightJoin(a => a.Type.Guid == a.TypeGuid223);
var sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a__Type.\"GUID\", a__Type.\"PARENTID\", a__Type.\"NAME\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a RIGHT JOIN \"TESTTYPEINFO\" a__Type ON a__Type.\"GUID\" = a.\"TYPEGUID\"", sql);
query.ToList();
- query = select.RightJoin(a => a.Type.Guid == a.TypeGuid && a.Type.Name == "xxx");
+ query = select.RightJoin(a => a.Type.Guid == a.TypeGuid223 && a.Type.Name == "xxx");
sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a__Type.\"GUID\", a__Type.\"PARENTID\", a__Type.\"NAME\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a RIGHT JOIN \"TESTTYPEINFO\" a__Type ON a__Type.\"GUID\" = a.\"TYPEGUID\" AND a__Type.\"NAME\" = 'xxx'", sql);
query.ToList();
- query = select.RightJoin(a => a.Type.Guid == a.TypeGuid && a.Type.Name == "xxx").Where(a => a.Type.Parent.Id == 10);
+ query = select.RightJoin(a => a.Type.Guid == a.TypeGuid223 && a.Type.Name == "xxx").Where(a => a.Type.Parent.Id == 10);
sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a__Type.\"GUID\", a__Type.\"PARENTID\", a__Type.\"NAME\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a RIGHT JOIN \"TESTTYPEINFO\" a__Type ON a__Type.\"GUID\" = a.\"TYPEGUID\" AND a__Type.\"NAME\" = 'xxx' LEFT JOIN \"TESTTYPEPARENTINFO\" a__Type__Parent ON a__Type__Parent.\"ID\" = a__Type.\"PARENTID\" WHERE (a__Type__Parent.\"ID\" = 10)", sql);
query.ToList();
//���û�е�������
- query = select.RightJoin((a, b) => b.Guid == a.TypeGuid);
+ query = select.RightJoin((a, b) => b.Guid == a.TypeGuid223);
sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", b.\"GUID\", b.\"PARENTID\", b.\"NAME\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a RIGHT JOIN \"TESTTYPEINFO\" b ON b.\"GUID\" = a.\"TYPEGUID\"", sql);
query.ToList();
- query = select.RightJoin((a, b) => b.Guid == a.TypeGuid && b.Name == "xxx");
+ query = select.RightJoin((a, b) => b.Guid == a.TypeGuid223 && b.Name == "xxx");
sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", b.\"GUID\", b.\"PARENTID\", b.\"NAME\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a RIGHT JOIN \"TESTTYPEINFO\" b ON b.\"GUID\" = a.\"TYPEGUID\" AND b.\"NAME\" = 'xxx'", sql);
query.ToList();
- query = select.RightJoin((a, a__Type) => a__Type.Guid == a.TypeGuid && a__Type.Name == "xxx").Where(a => a.Type.Parent.Id == 10);
+ query = select.RightJoin((a, a__Type) => a__Type.Guid == a.TypeGuid223 && a__Type.Name == "xxx").Where(a => a.Type.Parent.Id == 10);
sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a__Type.\"GUID\", a__Type.\"PARENTID\", a__Type.\"NAME\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a RIGHT JOIN \"TESTTYPEINFO\" a__Type ON a__Type.\"GUID\" = a.\"TYPEGUID\" AND a__Type.\"NAME\" = 'xxx' LEFT JOIN \"TESTTYPEPARENTINFO\" a__Type__Parent ON a__Type__Parent.\"ID\" = a__Type.\"PARENTID\" WHERE (a__Type__Parent.\"ID\" = 10)", sql);
query.ToList();
//�������
query = select
- .RightJoin(a => a.Type.Guid == a.TypeGuid)
+ .RightJoin(a => a.Type.Guid == a.TypeGuid223)
.RightJoin(a => a.Type.Parent.Id == a.Type.ParentId);
sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a__Type.\"GUID\", a__Type.\"PARENTID\", a__Type.\"NAME\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a RIGHT JOIN \"TESTTYPEINFO\" a__Type ON a__Type.\"GUID\" = a.\"TYPEGUID\" RIGHT JOIN \"TESTTYPEPARENTINFO\" a__Type__Parent ON a__Type__Parent.\"ID\" = a__Type.\"PARENTID\"", sql);
query.ToList();
query = select
- .RightJoin((a, a__Type) => a__Type.Guid == a.TypeGuid)
+ .RightJoin((a, a__Type) => a__Type.Guid == a.TypeGuid223)
.RightJoin((a, c) => c.Id == a.Type.ParentId);
sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a__Type.\"GUID\", a__Type.\"PARENTID\", a__Type.\"NAME\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a RIGHT JOIN \"TESTTYPEINFO\" a__Type ON a__Type.\"GUID\" = a.\"TYPEGUID\" RIGHT JOIN \"TESTTYPEPARENTINFO\" c ON c.\"ID\" = a__Type.\"PARENTID\"", sql);
@@ -504,7 +506,7 @@ namespace FreeSql.Tests.KingbaseES
//���û�е�������b��c������ϵ
var query2 = select.From((s, b, c) => s
- .RightJoin(a => a.TypeGuid == b.Guid)
+ .RightJoin(a => a.TypeGuid223 == b.Guid)
.RightJoin(a => b.ParentId == c.Id));
sql = query2.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", b.\"GUID\", b.\"PARENTID\", b.\"NAME\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a RIGHT JOIN \"TESTTYPEINFO\" b ON a.\"TYPEGUID\" = b.\"GUID\" RIGHT JOIN \"TESTTYPEPARENTINFO\" c ON b.\"PARENTID\" = c.\"ID\"", sql);
@@ -546,7 +548,7 @@ namespace FreeSql.Tests.KingbaseES
Assert.Equal("SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a__Type.\"GUID\", a__Type.\"PARENTID\", a__Type.\"NAME\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a LEFT JOIN \"TESTTYPEINFO\" a__Type ON a__Type.\"GUID\" = a.\"TYPEGUID\" WHERE (a__Type.\"NAME\" = 'typeTitle')", sql);
query.ToList();
- query = select.Where(a => a.Type.Name == "typeTitle" && a.Type.Guid == a.TypeGuid);
+ query = select.Where(a => a.Type.Name == "typeTitle" && a.Type.Guid == a.TypeGuid223);
sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a__Type.\"GUID\", a__Type.\"PARENTID\", a__Type.\"NAME\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a LEFT JOIN \"TESTTYPEINFO\" a__Type ON a__Type.\"GUID\" = a.\"TYPEGUID\" WHERE (a__Type.\"NAME\" = 'typeTitle' AND a__Type.\"GUID\" = a.\"TYPEGUID\")", sql);
query.ToList();
@@ -557,12 +559,12 @@ namespace FreeSql.Tests.KingbaseES
query.ToList();
//���û�е������ԣ��������
- query = select.Where((a, b) => b.Guid == a.TypeGuid && b.Name == "typeTitle");
+ query = select.Where((a, b) => b.Guid == a.TypeGuid223 && b.Name == "typeTitle");
sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a, \"TESTTYPEINFO\" b WHERE (b.\"GUID\" = a.\"TYPEGUID\" AND b.\"NAME\" = 'typeTitle')", sql);
query.ToList();
- query = select.Where((a, b) => b.Name == "typeTitle" && b.Guid == a.TypeGuid);
+ query = select.Where((a, b) => b.Name == "typeTitle" && b.Guid == a.TypeGuid223);
sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a, \"TESTTYPEINFO\" b WHERE (b.\"NAME\" = 'typeTitle' AND b.\"GUID\" = a.\"TYPEGUID\")", sql);
query.ToList();
@@ -604,7 +606,7 @@ namespace FreeSql.Tests.KingbaseES
Assert.Equal("SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a__Type.\"GUID\", a__Type.\"PARENTID\", a__Type.\"NAME\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a LEFT JOIN \"TESTTYPEINFO\" a__Type ON a__Type.\"GUID\" = a.\"TYPEGUID\" WHERE (a__Type.\"NAME\" = 'typeTitle')", sql);
query.ToList();
- query = select.WhereIf(true, a => a.Type.Name == "typeTitle" && a.Type.Guid == a.TypeGuid);
+ query = select.WhereIf(true, a => a.Type.Name == "typeTitle" && a.Type.Guid == a.TypeGuid223);
sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a__Type.\"GUID\", a__Type.\"PARENTID\", a__Type.\"NAME\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a LEFT JOIN \"TESTTYPEINFO\" a__Type ON a__Type.\"GUID\" = a.\"TYPEGUID\" WHERE (a__Type.\"NAME\" = 'typeTitle' AND a__Type.\"GUID\" = a.\"TYPEGUID\")", sql);
query.ToList();
@@ -645,7 +647,7 @@ namespace FreeSql.Tests.KingbaseES
Assert.Equal("SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a", sql);
query.ToList();
- query = select.WhereIf(false, a => a.Type.Name == "typeTitle" && a.Type.Guid == a.TypeGuid);
+ query = select.WhereIf(false, a => a.Type.Name == "typeTitle" && a.Type.Guid == a.TypeGuid223);
sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a", sql);
query.ToList();
@@ -706,7 +708,7 @@ namespace FreeSql.Tests.KingbaseES
g.kingbaseES.Insert().AppendData(new TestInfo { Title = "Title" + DateTime.Now.ToString("yyyyMMddHHmmss"), CreateTime = DateTime.Now, TypeGuid = (int)testpid1 }).ExecuteAffrows();
var fkfjfj = select.GroupBy(a => a.Title)
- .ToList(a => a.Sum(a.Value.TypeGuid));
+ .ToList(a => a.Sum(a.Value.TypeGuid223));
var aggsql1 = select
.GroupBy(a => a.Title)
@@ -714,7 +716,7 @@ namespace FreeSql.Tests.KingbaseES
{
b.Key,
cou = b.Count(),
- sum2 = b.Sum(b.Value.TypeGuid)
+ sum2 = b.Sum(b.Value.TypeGuid223)
});
var aggtolist1 = select
.GroupBy(a => a.Title)
@@ -722,7 +724,7 @@ namespace FreeSql.Tests.KingbaseES
{
b.Key,
cou = b.Count(),
- sum2 = b.Sum(b.Value.TypeGuid)
+ sum2 = b.Sum(b.Value.TypeGuid223)
});
var aggtolist11 = select
.GroupBy(a => a.Title)
@@ -730,7 +732,7 @@ namespace FreeSql.Tests.KingbaseES
{
b.Key,
cou = b.Count(),
- sum2 = b.Sum(b.Value.TypeGuid)
+ sum2 = b.Sum(b.Value.TypeGuid223)
});
var aggsql2 = select
@@ -741,7 +743,7 @@ namespace FreeSql.Tests.KingbaseES
b.Key.yyyy,
cou = b.Count(),
- sum2 = b.Sum(b.Value.TypeGuid)
+ sum2 = b.Sum(b.Value.TypeGuid223)
});
var aggtolist2 = select
.GroupBy(a => new { a.Title, yyyy = string.Concat(a.CreateTime.Year, '-', a.CreateTime.Month) })
@@ -750,7 +752,7 @@ namespace FreeSql.Tests.KingbaseES
b.Key.Title,
b.Key.yyyy,
cou = b.Count(),
- sum2 = b.Sum(b.Value.TypeGuid)
+ sum2 = b.Sum(b.Value.TypeGuid223)
});
var aggtolist22 = select
.GroupBy(a => new { a.Title, yyyy = string.Concat(a.CreateTime.Year, '-', a.CreateTime.Month) })
@@ -760,7 +762,7 @@ namespace FreeSql.Tests.KingbaseES
b.Key.yyyy,
b.Key,
cou = b.Count(),
- sum2 = b.Sum(b.Value.TypeGuid)
+ sum2 = b.Sum(b.Value.TypeGuid223)
});
var aggsql3 = select
@@ -769,7 +771,7 @@ namespace FreeSql.Tests.KingbaseES
{
b.Key,
cou = b.Count(),
- sum2 = b.Sum(b.Value.TypeGuid),
+ sum2 = b.Sum(b.Value.TypeGuid223),
sum3 = b.Sum(b.Value.Type.Parent.Id)
});
}
@@ -927,47 +929,47 @@ WHERE ((((a.""ID"")::text) in (SELECT b.""TITLE""
};
//����е�������a.Type��a.Type.Parent ���ǵ�������
- var query = select.LeftJoin(a => a.Type.Guid == a.TypeGuid).AsTable(tableRule);
+ var query = select.LeftJoin(a => a.Type.Guid == a.TypeGuid223).AsTable(tableRule);
var sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a__Type.\"GUID\", a__Type.\"PARENTID\", a__Type.\"NAME\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22_T1\" a LEFT JOIN \"TESTTYPEINFO_T2\" a__Type ON a__Type.\"GUID\" = a.\"TYPEGUID\"", sql);
- query = select.LeftJoin(a => a.Type.Guid == a.TypeGuid && a.Type.Name == "xxx").AsTable(tableRule);
+ query = select.LeftJoin(a => a.Type.Guid == a.TypeGuid223 && a.Type.Name == "xxx").AsTable(tableRule);
sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a__Type.\"GUID\", a__Type.\"PARENTID\", a__Type.\"NAME\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22_T1\" a LEFT JOIN \"TESTTYPEINFO_T2\" a__Type ON a__Type.\"GUID\" = a.\"TYPEGUID\" AND a__Type.\"NAME\" = 'xxx'", sql);
- query = select.LeftJoin(a => a.Type.Guid == a.TypeGuid && a.Type.Name == "xxx").Where(a => a.Type.Parent.Id == 10).AsTable(tableRule);
+ query = select.LeftJoin(a => a.Type.Guid == a.TypeGuid223 && a.Type.Name == "xxx").Where(a => a.Type.Parent.Id == 10).AsTable(tableRule);
sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a__Type.\"GUID\", a__Type.\"PARENTID\", a__Type.\"NAME\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22_T1\" a LEFT JOIN \"TESTTYPEINFO_T2\" a__Type ON a__Type.\"GUID\" = a.\"TYPEGUID\" AND a__Type.\"NAME\" = 'xxx' LEFT JOIN \"TESTTYPEPARENTIN_AT\" a__Type__Parent ON a__Type__Parent.\"ID\" = a__Type.\"PARENTID\" WHERE (a__Type__Parent.\"ID\" = 10)", sql);
//���û�е�������
- query = select.LeftJoin((a, b) => b.Guid == a.TypeGuid).AsTable(tableRule);
+ query = select.LeftJoin((a, b) => b.Guid == a.TypeGuid223).AsTable(tableRule);
sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", b.\"GUID\", b.\"PARENTID\", b.\"NAME\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22_T1\" a LEFT JOIN \"TESTTYPEINFO_T2\" b ON b.\"GUID\" = a.\"TYPEGUID\"", sql);
- query = select.LeftJoin((a, b) => b.Guid == a.TypeGuid && b.Name == "xxx").AsTable(tableRule);
+ query = select.LeftJoin((a, b) => b.Guid == a.TypeGuid223 && b.Name == "xxx").AsTable(tableRule);
sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", b.\"GUID\", b.\"PARENTID\", b.\"NAME\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22_T1\" a LEFT JOIN \"TESTTYPEINFO_T2\" b ON b.\"GUID\" = a.\"TYPEGUID\" AND b.\"NAME\" = 'xxx'", sql);
- query = select.LeftJoin((a, a__Type) => a__Type.Guid == a.TypeGuid && a__Type.Name == "xxx").Where(a => a.Type.Parent.Id == 10).AsTable(tableRule);
+ query = select.LeftJoin((a, a__Type) => a__Type.Guid == a.TypeGuid223 && a__Type.Name == "xxx").Where(a => a.Type.Parent.Id == 10).AsTable(tableRule);
sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a__Type.\"GUID\", a__Type.\"PARENTID\", a__Type.\"NAME\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22_T1\" a LEFT JOIN \"TESTTYPEINFO_T2\" a__Type ON a__Type.\"GUID\" = a.\"TYPEGUID\" AND a__Type.\"NAME\" = 'xxx' LEFT JOIN \"TESTTYPEPARENTIN_AT\" a__Type__Parent ON a__Type__Parent.\"ID\" = a__Type.\"PARENTID\" WHERE (a__Type__Parent.\"ID\" = 10)", sql);
//�������
query = select
- .LeftJoin(a => a.Type.Guid == a.TypeGuid)
+ .LeftJoin(a => a.Type.Guid == a.TypeGuid223)
.LeftJoin(a => a.Type.Parent.Id == a.Type.ParentId).AsTable(tableRule);
sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a__Type.\"GUID\", a__Type.\"PARENTID\", a__Type.\"NAME\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22_T1\" a LEFT JOIN \"TESTTYPEINFO_T2\" a__Type ON a__Type.\"GUID\" = a.\"TYPEGUID\" LEFT JOIN \"TESTTYPEPARENTIN_AT\" a__Type__Parent ON a__Type__Parent.\"ID\" = a__Type.\"PARENTID\"", sql);
query = select
- .LeftJoin((a, a__Type) => a__Type.Guid == a.TypeGuid)
+ .LeftJoin((a, a__Type) => a__Type.Guid == a.TypeGuid223)
.LeftJoin((a, c) => c.Id == a.Type.ParentId).AsTable(tableRule);
sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a__Type.\"GUID\", a__Type.\"PARENTID\", a__Type.\"NAME\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22_T1\" a LEFT JOIN \"TESTTYPEINFO_T2\" a__Type ON a__Type.\"GUID\" = a.\"TYPEGUID\" LEFT JOIN \"TESTTYPEPARENTIN_AT\" c ON c.\"ID\" = a__Type.\"PARENTID\"", sql);
//���û�е�������b��c������ϵ
var query2 = select.From((s, b, c) => s
- .LeftJoin(a => a.TypeGuid == b.Guid)
+ .LeftJoin(a => a.TypeGuid223 == b.Guid)
.LeftJoin(a => b.ParentId == c.Id)).AsTable(tableRule);
sql = query2.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", b.\"GUID\", b.\"PARENTID\", b.\"NAME\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22_T1\" a LEFT JOIN \"TESTTYPEINFO_T2\" b ON a.\"TYPEGUID\" = b.\"GUID\" LEFT JOIN \"TESTTYPEPARENTIN_AT\" c ON b.\"PARENTID\" = c.\"ID\"", sql);
diff --git a/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerSelectWithTempQueryTest.cs b/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerSelectWithTempQueryTest.cs
index febc609f..b878bb02 100644
--- a/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerSelectWithTempQueryTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerSelectWithTempQueryTest.cs
@@ -1711,6 +1711,97 @@ WHERE (a.[rownum] = 1) AND ((a.[Nickname] = N'name02' OR a.[Nickname] = N'name03
Assert.Equal("name03", list16[1].user.Nickname);
Assert.Equal(0, list16[1].subquery1);
Assert.Equal(0, list16[1].subquery2);
+
+
+ var sql17 = fsql.Select()
+ .WithTempQuery(a => new { UserId = a.Id, a.Nickname })
+ .From()
+ .InnerJoin((a, b) => a.UserId == b.UserId)
+ .WithTempQuery((a, b) => new
+ {
+ User = a,
+ UserExt = b,
+ rownum = SqlExt.RowNumber().Over().PartitionBy(a.Nickname).OrderBy(a.UserId).ToValue()
+ })
+ .Where(a => a.rownum == 1)
+ .ToSql();
+ var assertSql17 = @"SELECT *
+FROM (
+ SELECT a.[UserId], a.[Nickname], b.[UserId] [UserId2], b.[Remark], row_number() over( partition by a.[Nickname] order by a.[UserId]) [rownum]
+ FROM (
+ SELECT a.[Id] [UserId], a.[Nickname]
+ FROM [TwoTablePartitionBy_User] a ) a
+ INNER JOIN [TwoTablePartitionBy_UserExt] b ON a.[UserId] = b.[UserId] ) a
+WHERE (a.[rownum] = 1)";
+ Assert.Equal(sql17, assertSql17);
+ var list17 = fsql.Select()
+ .WithTempQuery(a => new { UserId = a.Id, a.Nickname })
+ .From()
+ .InnerJoin((a, b) => a.UserId == b.UserId)
+ .WithTempQuery((a, b) => new
+ {
+ User = a,
+ UserExt = b,
+ rownum = SqlExt.RowNumber().Over().PartitionBy(a.Nickname).OrderBy(a.UserId).ToValue()
+ })
+ .Where(a => a.rownum == 1)
+ .ToList();
+
+
+ var sql18 = fsql.Select()
+ .WithTempQuery(a => new { UserId = a.Id, a.Nickname })
+ .From()
+ .InnerJoin((a, b) => a.UserId == b.UserId)
+ .WithTempQuery((a, b) => new
+ {
+ User = a,
+ UserExt = b,
+ rownum = SqlExt.RowNumber().Over().PartitionBy(a.Nickname).OrderBy(a.UserId).ToValue()
+ })
+ .Where(a => a.rownum == 1 && a.UserExt.UserId > 0 && a.User.UserId > 0)
+ .WithTempQuery(a => new
+ {
+ Item = a,
+ a.User,
+ a.UserExt,
+ a.rownum
+ })
+ .Where(a => a.rownum == 1 && a.UserExt.UserId > 0 && a.User.UserId > 0)
+ .Where(a => a.Item.UserExt.UserId > 0 && a.Item.User.UserId > 0)
+ .ToSql();
+ var assertSql18 = @"SELECT *
+FROM (
+ SELECT a.[UserId], a.[Nickname], a.[UserId2], a.[Remark], a.[rownum], a.[UserId] [UserId3], a.[Nickname] [Nickname2], a.[UserId2] [UserId22], a.[Remark] [Remark2], a.[rownum] [rownum2]
+ FROM (
+ SELECT a.[UserId], a.[Nickname], b.[UserId] [UserId2], b.[Remark], row_number() over( partition by a.[Nickname] order by a.[UserId]) [rownum]
+ FROM (
+ SELECT a.[Id] [UserId], a.[Nickname]
+ FROM [TwoTablePartitionBy_User] a ) a
+ INNER JOIN [TwoTablePartitionBy_UserExt] b ON a.[UserId] = b.[UserId] ) a
+ WHERE (a.[rownum] = 1 AND a.[UserId2] > 0 AND a.[UserId] > 0) ) a
+WHERE (a.[rownum2] = 1 AND a.[UserId22] > 0 AND a.[UserId3] > 0) AND (a.[UserId2] > 0 AND a.[UserId] > 0)";
+ Assert.Equal(sql18, assertSql18);
+ var list18 = fsql.Select()
+ .WithTempQuery(a => new { UserId = a.Id, a.Nickname })
+ .From()
+ .InnerJoin((a, b) => a.UserId == b.UserId)
+ .WithTempQuery((a, b) => new
+ {
+ User = a,
+ UserExt = b,
+ rownum = SqlExt.RowNumber().Over().PartitionBy(a.Nickname).OrderBy(a.UserId).ToValue()
+ })
+ .Where(a => a.rownum == 1 && a.UserExt.UserId > 0 && a.User.UserId > 0)
+ .WithTempQuery(a => new
+ {
+ Item = a,
+ a.User,
+ a.UserExt,
+ a.rownum
+ })
+ .Where(a => a.rownum == 1 && a.UserExt.UserId > 0 && a.User.UserId > 0)
+ .Where(a => a.Item.UserExt.UserId > 0 && a.Item.User.UserId > 0)
+ .ToList();
}
class TwoTablePartitionBy_User
{
diff --git a/FreeSql.Tests/FreeSql.Tests/UnitTest1.cs b/FreeSql.Tests/FreeSql.Tests/UnitTest1.cs
index 2f1ca4ce..cb628870 100644
--- a/FreeSql.Tests/FreeSql.Tests/UnitTest1.cs
+++ b/FreeSql.Tests/FreeSql.Tests/UnitTest1.cs
@@ -601,12 +601,12 @@ namespace FreeSql.Tests
.UseMonitorCommand(a => Trace.WriteLine(a.CommandText))
.Build();
- var data = fsql.Select().ToList(r => new
- {
- Id = r.Id,
- Name = r.AuthorId.ToString(),
- AuthorName = r.Author.Name,
- });
+ //var data = fsql.Select().ToList(r => new
+ //{
+ // Id = r.Id,
+ // Name = r.AuthorId.ToString(),
+ // AuthorName = r.Author.Name,
+ //});
//g.mysql.Aop.AuditValue += (s, e) =>
//{
diff --git a/FreeSql.Tests/FreeSql.Tests/g.cs b/FreeSql.Tests/FreeSql.Tests/g.cs
index 4db61756..301675c4 100644
--- a/FreeSql.Tests/FreeSql.Tests/g.cs
+++ b/FreeSql.Tests/FreeSql.Tests/g.cs
@@ -158,9 +158,9 @@ public class g
public static IFreeSql shentong => shentongLazy.Value;
static Lazy kingbaseESLazy = new Lazy(() => new FreeSql.FreeSqlBuilder()
- .UseConnectionString(FreeSql.DataType.KingbaseES, "Server=127.0.0.1;Port=54321;UID=USER2;PWD=123456789;database=TDB2")
- //.UseConnectionFactory(FreeSql.DataType.KingbaseES, () => new Kdbndp.KdbndpConnection("Server=127.0.0.1;Port=54321;UID=USER2;PWD=123456789;database=TDB2"))
- .UseAutoSyncStructure(true)
+ //.UseConnectionString(FreeSql.DataType.KingbaseES, "Server=127.0.0.1;Port=54321;UID=USER2;PWD=123456789;database=TDB2")
+ .UseConnectionFactory(FreeSql.DataType.KingbaseES, () => new Kdbndp.KdbndpConnection("Server=127.0.0.1;Port=54321;UID=USER2;PWD=123456789;database=TDB2"))
+ //.UseAutoSyncStructure(true)
.UseLazyLoading(true)
.UseNameConvert(FreeSql.Internal.NameConvertType.ToUpper)
.UseNoneCommandParameter(true)
diff --git a/FreeSql/Internal/CommonExpression.cs b/FreeSql/Internal/CommonExpression.cs
index 50c67be3..af0add07 100644
--- a/FreeSql/Internal/CommonExpression.cs
+++ b/FreeSql/Internal/CommonExpression.cs
@@ -51,6 +51,7 @@ namespace FreeSql.Internal
}
internal bool EndsWithDbNestedField(string dbField, string dbNestedField)
{
+ if (string.IsNullOrWhiteSpace(dbNestedField)) return true;
switch (_ado.DataType)
{
case DataType.SqlServer:
@@ -161,9 +162,8 @@ namespace FreeSql.Internal
foreach (var child in parent.GetAllChilds())
{
if (withTempQueryParser != null)
- field.Append(", ").Append(withTempQueryParser.ParseExpMatchedTable.Alias).Append(".").Append(child.DbNestedField);
- else
- field.Append(", ").Append(child.DbField);
+ child.DbField = $"{withTempQueryParser.ParseExpMatchedTable.Alias}.{child.DbNestedField}";
+ field.Append(", ").Append(child.DbField);
if (index >= 0)
{
child.DbNestedField = $"as{++index}";
diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/Select0Provider.cs b/FreeSql/Internal/CommonProvider/SelectProvider/Select0Provider.cs
index 308b577f..40fa38a9 100644
--- a/FreeSql/Internal/CommonProvider/SelectProvider/Select0Provider.cs
+++ b/FreeSql/Internal/CommonProvider/SelectProvider/Select0Provider.cs
@@ -192,6 +192,31 @@ namespace FreeSql.Internal.CommonProvider
}
InsideField = field.Length > 0 ? field.Remove(0, 2).ToString() : null;
InsideAf = new ReadAnonymousTypeAfInfo(InsideMap, "*");
+ field.Clear();
+ if (InsideMap.Childs.Where(a => a.Childs.Count > 1).Count() > 1)
+ {
+ var childs = InsideMap.GetAllChilds();
+ var duplicateNames = childs.GroupBy(a => a.DbNestedField).Where(a => a.Count() > 1).ToList();
+ if (duplicateNames.Count > 0)
+ {
+ foreach (var duplicateName in duplicateNames)
+ {
+ var dupmapIdx = 0;
+ foreach (var dupmap in duplicateName)
+ {
+ if (++dupmapIdx == 1) continue;
+ var newfield = insideSelect._commonUtils.TrimQuoteSqlName(dupmap.DbNestedField);
+ while (InsideField.Contains($"{newfield}{dupmapIdx}"))
+ ++dupmapIdx;
+ dupmap.DbNestedField = insideSelect._commonUtils.QuoteSqlName($"{newfield}{dupmapIdx}");
+ }
+ }
+ foreach (var child in childs)
+ field.Append(", ").Append(child.DbField).Append(InsideSelect._commonExpression.EndsWithDbNestedField(child.DbField, child.DbNestedField) ? "" : InsideSelect._commonUtils.FieldAsAlias(child.DbNestedField));
+ InsideField = field.Length > 0 ? field.Remove(0, 2).ToString() : null;
+ field.Clear();
+ }
+ }
}
}
@@ -1208,6 +1233,11 @@ namespace FreeSql.Internal.CommonProvider
ret._cancel = _cancel;
ret._params.AddRange(_params);
if (ret._tables[0].Table == null) ret._tables[0].Table = TableInfo.GetDefaultTable(typeof(TDto));
+ if (selector is LambdaExpression lambdaExp && lambdaExp != null)
+ {
+ for (var a = 0; a < lambdaExp.Parameters.Count; a++)
+ _tables[a].Parameter = lambdaExp.Parameters[a];
+ }
var parser = new WithTempQueryParser(this, null, selector, ret._tables[0]);
var sql = $"\r\n{this.ToSql(parser._insideSelectList[0].InsideField)}";
ret.WithSql(sql);
diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/SelectGroupingProvider.cs b/FreeSql/Internal/CommonProvider/SelectProvider/SelectGroupingProvider.cs
index fd420763..7d26c47e 100644
--- a/FreeSql/Internal/CommonProvider/SelectProvider/SelectGroupingProvider.cs
+++ b/FreeSql/Internal/CommonProvider/SelectProvider/SelectGroupingProvider.cs
@@ -247,6 +247,7 @@ namespace FreeSql.Internal.CommonProvider
_addFieldAlias = true; //解决:[Column(Name = "flevel") 与属性名不一致时,嵌套查询 bug
var old_field = _field;
var fieldsb = new StringBuilder();
+ if (_map.Childs.Any() == false) fieldsb.Append(", ").Append(_map.DbField).Append(_comonExp.EndsWithDbNestedField(_map.DbField, _map.DbNestedField) ? "" : _comonExp._common.FieldAsAlias(_map.DbNestedField));
foreach (var child in _map.GetAllChilds())
fieldsb.Append(", ").Append(child.DbField).Append(_comonExp.EndsWithDbNestedField(child.DbField, child.DbNestedField) ? "" : _comonExp._common.FieldAsAlias(child.DbNestedField));
_field = fieldsb.ToString();
diff --git a/FreeSql/Internal/UtilsExpressionTree.cs b/FreeSql/Internal/UtilsExpressionTree.cs
index b44e44da..f291776d 100644
--- a/FreeSql/Internal/UtilsExpressionTree.cs
+++ b/FreeSql/Internal/UtilsExpressionTree.cs
@@ -2459,9 +2459,9 @@ namespace FreeSql.Internal
}
break;
}
- if (startLength > 0)
+ if (startLength >= 0)
{
- var pvalue = sql.Substring(startIdx, startLength).Replace("''", "'");
+ var pvalue = startLength == 0 ? "" : sql.Substring(startIdx, startLength).Replace("''", "'");
var pname = parms.Where(a => a.Value == pvalue).Select(a => a.Key).FirstOrDefault();
if (string.IsNullOrEmpty(pname))
{
diff --git a/README.zh-CN.md b/README.zh-CN.md
index 6ba341e4..17b11f29 100644
--- a/README.zh-CN.md
+++ b/README.zh-CN.md
@@ -44,9 +44,7 @@ QQ群:4336577(已满)、8578575(已满)、52508226(在线)
- [zhontai.net Admin 后台管理系统](https://github.com/zhontai/Admin.Core)
- [A simple and practical CMS implemented by .NET Core](https://github.com/luoyunchong/lin-cms-dotnetcore)
-- [iusaas.com SaaS 企业应用管理系统](https://github.com/alonsoalon/TenantSite.Server)
- [EasyCms 企业建站,事业单位使用的CMS管理系统](https://github.com/jasonyush/EasyCMS)
-- [内容管理系统](https://github.com/hejiyong/fscms)