mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-06-19 04:18:16 +08:00
- 优化 pgsql jsonb 映射,支持 List,mysql limit in 子查询;
This commit is contained in:
@ -1008,6 +1008,14 @@ FROM `tb_topic` a
|
||||
WHERE (((cast(a.`Id` as char)) in (SELECT b.`Title`
|
||||
FROM `tb_topic` b)))", subquery);
|
||||
var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
|
||||
|
||||
subquery = select.Where(a => select.As("b").Limit(10).ToList(b => b.Title).Contains(a.Id.ToString())).ToSql();
|
||||
Assert.Equal(@"SELECT a.`Id`, a.`Clicks`, a.`TypeGuid`, a.`Title`, a.`CreateTime`
|
||||
FROM `tb_topic` a
|
||||
WHERE (((cast(a.`Id` as char)) in ( SELECT * FROM (SELECT b.`Title`
|
||||
FROM `tb_topic` b
|
||||
limit 0,10) ftblmt50 )))", subquery);
|
||||
subqueryList = select.Where(a => select.As("b").Limit(10).ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
|
||||
}
|
||||
[Fact]
|
||||
public void As()
|
||||
|
@ -933,6 +933,14 @@ FROM ""TB_TOPIC22"" a
|
||||
WHERE (((to_char(a.""ID"")) in (SELECT b.""TITLE""
|
||||
FROM ""TB_TOPIC22"" b)))", subquery);
|
||||
var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
|
||||
|
||||
subquery = select.Where(a => select.As("b").Limit(10).ToList(b => b.Title).Contains(a.Id.ToString())).ToSql();
|
||||
Assert.Equal(@"SELECT a.""ID"", a.""CLICKS"", a.""TYPEGUID"", a.""TITLE"", a.""CREATETIME""
|
||||
FROM ""TB_TOPIC22"" a
|
||||
WHERE (((to_char(a.""ID"")) in (SELECT b.""TITLE""
|
||||
FROM ""TB_TOPIC22"" b
|
||||
WHERE ROWNUM < 11)))", subquery);
|
||||
subqueryList = select.Where(a => select.As("b").Limit(10).ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
|
||||
}
|
||||
[Fact]
|
||||
public void As()
|
||||
|
@ -1019,6 +1019,14 @@ FROM `tb_topic` a
|
||||
WHERE (((cast(a.`Id` as char)) in (SELECT b.`Title`
|
||||
FROM `tb_topic` b)))", subquery);
|
||||
var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
|
||||
|
||||
subquery = select.Where(a => select.As("b").Limit(10).ToList(b => b.Title).Contains(a.Id.ToString())).ToSql();
|
||||
Assert.Equal(@"SELECT a.`Id`, a.`Clicks`, a.`TypeGuid`, a.`Title`, a.`CreateTime`
|
||||
FROM `tb_topic` a
|
||||
WHERE (((cast(a.`Id` as char)) in ( SELECT * FROM (SELECT b.`Title`
|
||||
FROM `tb_topic` b
|
||||
limit 0,10) ftblmt50 )))", subquery);
|
||||
subqueryList = select.Where(a => select.As("b").Limit(10).ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
|
||||
}
|
||||
[Fact]
|
||||
public void As()
|
||||
|
@ -934,6 +934,14 @@ FROM ""TB_TOPIC22"" a
|
||||
WHERE (((to_char(a.""ID"")) in (SELECT b.""TITLE""
|
||||
FROM ""TB_TOPIC22"" b)))", subquery);
|
||||
var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
|
||||
|
||||
subquery = select.Where(a => select.As("b").Limit(10).ToList(b => b.Title).Contains(a.Id.ToString())).ToSql();
|
||||
Assert.Equal(@"SELECT a.""ID"", a.""CLICKS"", a.""TYPEGUID"", a.""TITLE"", a.""CREATETIME""
|
||||
FROM ""TB_TOPIC22"" a
|
||||
WHERE (((to_char(a.""ID"")) in (SELECT b.""TITLE""
|
||||
FROM ""TB_TOPIC22"" b
|
||||
WHERE ROWNUM < 11)))", subquery);
|
||||
subqueryList = select.Where(a => select.As("b").Limit(10).ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
|
||||
}
|
||||
[Fact]
|
||||
public void As()
|
||||
|
@ -995,6 +995,14 @@ FROM ""tb_topic"" a
|
||||
WHERE ((((a.""id"")::text) in (SELECT b.""title""
|
||||
FROM ""tb_topic"" b)))", subquery);
|
||||
var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
|
||||
|
||||
subquery = select.Where(a => select.As("b").Limit(10).ToList(b => b.Title).Contains(a.Id.ToString())).ToSql();
|
||||
Assert.Equal(@"SELECT a.""id"", a.""clicks"", a.""typeguid"", a.""title"", a.""createtime""
|
||||
FROM ""tb_topic"" a
|
||||
WHERE ((((a.""id"")::text) in (SELECT b.""title""
|
||||
FROM ""tb_topic"" b
|
||||
limit 10)))", subquery);
|
||||
subqueryList = select.Where(a => select.As("b").Limit(10).ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
|
||||
}
|
||||
[Fact]
|
||||
public void As()
|
||||
|
@ -6,7 +6,7 @@ using Xunit;
|
||||
namespace FreeSql.Tests.AdoNetExtensions.OracleConnectionExtensions {
|
||||
public class Methods {
|
||||
|
||||
string _connectString = "user id=user1;password=123456;data source=//127.0.0.1:1521/XE;Pooling=true;Max Pool Size=5";
|
||||
string _connectString = "user id=1user;password=123456;data source=//127.0.0.1:1521/XE;Pooling=true;Max Pool Size=5";
|
||||
|
||||
public Methods() {
|
||||
g.oracle.CodeFirst.SyncStructure<TestConnectionExt>();
|
||||
|
@ -951,6 +951,14 @@ FROM ""TB_TOPIC22"" a
|
||||
WHERE (((to_char(a.""ID"")) in (SELECT b.""TITLE""
|
||||
FROM ""TB_TOPIC22"" b)))", subquery);
|
||||
var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
|
||||
|
||||
subquery = select.Where(a => select.As("b").Limit(10).ToList(b => b.Title).Contains(a.Id.ToString())).ToSql();
|
||||
Assert.Equal(@"SELECT a.""ID"", a.""CLICKS"", a.""TYPEGUID"", a.""TITLE"", a.""CREATETIME""
|
||||
FROM ""TB_TOPIC22"" a
|
||||
WHERE (((to_char(a.""ID"")) in (SELECT b.""TITLE""
|
||||
FROM ""TB_TOPIC22"" b
|
||||
WHERE ROWNUM < 11)))", subquery);
|
||||
subqueryList = select.Where(a => select.As("b").Limit(10).ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
|
||||
}
|
||||
[Fact]
|
||||
public void As()
|
||||
|
@ -934,6 +934,13 @@ FROM ""TB_TOPIC22"" a
|
||||
WHERE (((cast(a.""ID"" as blob sub_type 1)) in (SELECT b.""TITLE""
|
||||
FROM ""TB_TOPIC22"" b)))", subquery);
|
||||
var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
|
||||
|
||||
subquery = select.Where(a => select.As("b").Limit(10).ToList(b => b.Title).Contains(a.Id.ToString())).ToSql();
|
||||
Assert.Equal(@"SELECT a.""ID"", a.""CLICKS"", a.""TYPEGUID"", a.""TITLE"", a.""CREATETIME""
|
||||
FROM ""TB_TOPIC22"" a
|
||||
WHERE (((cast(a.""ID"" as blob sub_type 1)) in (SELECT FIRST 10 b.""TITLE""
|
||||
FROM ""TB_TOPIC22"" b)))", subquery);
|
||||
subqueryList = select.Where(a => select.As("b").Limit(10).ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
|
||||
}
|
||||
[Fact]
|
||||
public void As()
|
||||
|
@ -899,6 +899,13 @@ FROM [tb_topic22] a
|
||||
WHERE (((cstr(a.[Id])) in (SELECT b.[Title]
|
||||
FROM [tb_topic22] b)))", subquery);
|
||||
var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
|
||||
|
||||
subquery = select.Where(a => select.As("b").Limit(10).ToList(b => b.Title).Contains(a.Id.ToString())).ToSql();
|
||||
Assert.Equal(@"SELECT a.[Id], a.[Clicks], a.[TypeGuid], a.[Title], a.[CreateTime]
|
||||
FROM [tb_topic22] a
|
||||
WHERE (((cstr(a.[Id])) in (SELECT TOP 10 b.[Title]
|
||||
FROM [tb_topic22] b)))", subquery);
|
||||
subqueryList = select.Where(a => select.As("b").Limit(10).ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
|
||||
}
|
||||
[Fact]
|
||||
public void As()
|
||||
|
@ -1071,6 +1071,14 @@ FROM `tb_topic` a
|
||||
WHERE (((cast(a.`Id` as char)) in (SELECT b.`Title`
|
||||
FROM `tb_topic` b)))", subquery);
|
||||
var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
|
||||
|
||||
subquery = select.Where(a => select.As("b").Limit(10).ToList(b => b.Title).Contains(a.Id.ToString())).ToSql();
|
||||
Assert.Equal(@"SELECT a.`Id`, a.`Clicks`, a.`TypeGuid`, a.`Title`, a.`CreateTime`
|
||||
FROM `tb_topic` a
|
||||
WHERE (((cast(a.`Id` as char)) in ( SELECT * FROM (SELECT b.`Title`
|
||||
FROM `tb_topic` b
|
||||
limit 0,10) ftblmt50 )))", subquery);
|
||||
subqueryList = select.Where(a => select.As("b").Limit(10).ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
|
||||
}
|
||||
[Fact]
|
||||
public void As()
|
||||
|
@ -938,6 +938,14 @@ FROM ""TB_TOPIC22"" a
|
||||
WHERE (((to_char(a.""ID"")) in (SELECT b.""TITLE""
|
||||
FROM ""TB_TOPIC22"" b)))", subquery);
|
||||
var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
|
||||
|
||||
subquery = select.Where(a => select.As("b").Limit(10).ToList(b => b.Title).Contains(a.Id.ToString())).ToSql();
|
||||
Assert.Equal(@"SELECT a.""ID"", a.""CLICKS"", a.""TYPEGUID"", a.""TITLE"", a.""CREATETIME""
|
||||
FROM ""TB_TOPIC22"" a
|
||||
WHERE (((to_char(a.""ID"")) in (SELECT b.""TITLE""
|
||||
FROM ""TB_TOPIC22"" b
|
||||
WHERE ROWNUM < 11)))", subquery);
|
||||
subqueryList = select.Where(a => select.As("b").Limit(10).ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
|
||||
}
|
||||
[Fact]
|
||||
public void As()
|
||||
|
@ -1012,6 +1012,14 @@ FROM ""tb_topic"" a
|
||||
WHERE ((((a.""id"")::text) in (SELECT b.""title""
|
||||
FROM ""tb_topic"" b)))", subquery);
|
||||
var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
|
||||
|
||||
subquery = select.Where(a => select.As("b").Limit(10).ToList(b => b.Title).Contains(a.Id.ToString())).ToSql();
|
||||
Assert.Equal(@"SELECT a.""id"", a.""clicks"", a.""typeguid"", a.""title"", a.""createtime""
|
||||
FROM ""tb_topic"" a
|
||||
WHERE ((((a.""id"")::text) in (SELECT b.""title""
|
||||
FROM ""tb_topic"" b
|
||||
limit 10)))", subquery);
|
||||
subqueryList = select.Where(a => select.As("b").Limit(10).ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
|
||||
}
|
||||
[Fact]
|
||||
public void As()
|
||||
|
@ -945,6 +945,13 @@ FROM [tb_topic22] a
|
||||
WHERE (((cast(a.[Id] as nvarchar(100))) in (SELECT b.[Title]
|
||||
FROM [tb_topic22] b)))", subquery);
|
||||
var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
|
||||
|
||||
subquery = select.Where(a => select.As("b").Limit(10).ToList(b => b.Title).Contains(a.Id.ToString())).ToSql();
|
||||
Assert.Equal(@"SELECT a.[Id], a.[Clicks], a.[TypeGuid], a.[Title], a.[CreateTime]
|
||||
FROM [tb_topic22] a
|
||||
WHERE (((cast(a.[Id] as nvarchar(100))) in (SELECT TOP 10 b.[Title]
|
||||
FROM [tb_topic22] b)))", subquery);
|
||||
subqueryList = select.Where(a => select.As("b").Limit(10).ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
|
||||
}
|
||||
[Fact]
|
||||
public void As()
|
||||
|
@ -922,6 +922,14 @@ FROM ""tb_topic22"" a
|
||||
WHERE (((cast(a.""Id"" as character)) in (SELECT b.""Title""
|
||||
FROM ""tb_topic22"" b)))", subquery);
|
||||
var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
|
||||
|
||||
subquery = select.Where(a => select.As("b").Limit(10).ToList(b => b.Title).Contains(a.Id.ToString())).ToSql();
|
||||
Assert.Equal(@"SELECT a.""Id"", a.""Clicks"", a.""TypeGuid"", a.""Title"", a.""CreateTime""
|
||||
FROM ""tb_topic22"" a
|
||||
WHERE (((cast(a.""Id"" as character)) in (SELECT b.""Title""
|
||||
FROM ""tb_topic22"" b
|
||||
limit 0,10)))", subquery);
|
||||
subqueryList = select.Where(a => select.As("b").Limit(10).ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
|
||||
}
|
||||
[Fact]
|
||||
public void As()
|
||||
|
@ -633,7 +633,7 @@ INNER JOIN ""userinfo"" p ON p.""userid"" = o.""userid""", select16Sql2);
|
||||
.UseLazyLoading(true)
|
||||
.Build());
|
||||
ib.Register("db2", () => new FreeSql.FreeSqlBuilder()
|
||||
.UseConnectionString(FreeSql.DataType.Oracle, "user id=user1;password=123456;data source=//127.0.0.1:1521/XE;Pooling=true;Max Pool Size=3")
|
||||
.UseConnectionString(FreeSql.DataType.Oracle, "user id=1user;password=123456;data source=//127.0.0.1:1521/XE;Pooling=true;Max Pool Size=3")
|
||||
.UseAutoSyncStructure(true)
|
||||
.UseGenerateCommandParameterWithLambda(true)
|
||||
.UseLazyLoading(true)
|
||||
|
@ -3,6 +3,7 @@ using FreeSql.DataAnnotations;
|
||||
using FreeSql.Internal;
|
||||
using FreeSql.Internal.CommonProvider;
|
||||
using MySql.Data.MySqlClient;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
@ -15,6 +16,35 @@ namespace FreeSql.Tests
|
||||
{
|
||||
public class UnitTest5
|
||||
{
|
||||
|
||||
[Fact]
|
||||
public void TestJsonb01()
|
||||
{
|
||||
var fsql = g.pgsql;
|
||||
fsql.Delete<TestJsonb01Cls1>().Where("1=1").ExecuteAffrows();
|
||||
|
||||
var item = new TestJsonb01Cls1
|
||||
{
|
||||
jsonb01 = new List<int> { 1, 5, 10, 20 },
|
||||
jsonb02 = new List<long> { 11, 51, 101, 201 },
|
||||
jsonb03 = new List<string> { "12", "52", "102", "202" },
|
||||
};
|
||||
fsql.Insert(item).ExecuteAffrows();
|
||||
|
||||
var items = fsql.Select<TestJsonb01Cls1>().ToList();
|
||||
}
|
||||
|
||||
public class TestJsonb01Cls1
|
||||
{
|
||||
public Guid id { get; set; }
|
||||
[Column(MapType = typeof(JArray))]
|
||||
public List<int> jsonb01 { get; set; }
|
||||
[Column(MapType = typeof(JToken))]
|
||||
public List<long> jsonb02 { get; set; }
|
||||
[Column(MapType = typeof(JToken))]
|
||||
public List<string> jsonb03 { get; set; }
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void DebugUpdateSet01()
|
||||
{
|
||||
|
Reference in New Issue
Block a user