Merge main branches

This commit is contained in:
igeekfan
2022-05-20 03:16:13 +08:00
121 changed files with 1110 additions and 709 deletions

View File

@ -33,7 +33,7 @@ namespace FreeSql.Tests
fsql.Delete<DeleteCascadeUserExt>().Where("1=1").ExecuteAffrows();
var user = new DeleteCascadeUser { Username = "admin01", Password = "pwd01", UserExt = new DeleteCascadeUserExt { Remark = "用户备注01" } };
userRepo.Insert(user);
var ret = userRepo.RemoveCascadeByDatabase(a => a.Id == user.Id);
var ret = userRepo.DeleteCascadeByDatabase(a => a.Id == user.Id);
Assert.Equal(2, ret.Count);
Assert.IsType<DeleteCascadeUserExt>(ret[0]);
Assert.Equal(user.UserExt.UserId, (ret[0] as DeleteCascadeUserExt).UserId);
@ -64,7 +64,7 @@ namespace FreeSql.Tests
fsql.Delete<DeleteCascadeUserExt>().Where("1=1").ExecuteAffrows();
user = new DeleteCascadeUser { Username = "admin01", Password = "pwd01", UserExt = new DeleteCascadeUserExt { Remark = "用户备注01" } };
userRepo.Insert(user);
ret = userextRepo.RemoveCascadeByDatabase(a => a.UserId == user.UserExt.UserId);
ret = userextRepo.DeleteCascadeByDatabase(a => a.UserId == user.UserExt.UserId);
Assert.Equal(2, ret.Count);
Assert.IsType<DeleteCascadeUserExt>(ret[1]);
Assert.Equal(user.UserExt.UserId, (ret[1] as DeleteCascadeUserExt).UserId);
@ -112,7 +112,7 @@ namespace FreeSql.Tests
Assert.Equal(group.Id, group.Users[0].GroupId);
Assert.Equal(group.Id, group.Users[1].GroupId);
Assert.Equal(group.Id, group.Users[2].GroupId);
ret = groupRepo.RemoveCascadeByDatabase(a => a.Id == group.Id);
ret = groupRepo.DeleteCascadeByDatabase(a => a.Id == group.Id);
Assert.Equal(7, ret.Count);
Assert.IsType<DeleteCascadeUserExt>(ret[0]);
Assert.Equal(group.Users[0].UserExt.UserId, (ret[0] as DeleteCascadeUserExt).UserId);
@ -211,7 +211,7 @@ namespace FreeSql.Tests
Assert.Equal(group.Id, group.Users[0].GroupId);
Assert.Equal(group.Id, group.Users[1].GroupId);
Assert.Equal(group.Id, group.Users[2].GroupId);
ret = groupRepo.RemoveCascadeByDatabase(a => a.Id == group.Id);
ret = groupRepo.DeleteCascadeByDatabase(a => a.Id == group.Id);
Assert.Equal(18, ret.Count);
Assert.IsType<DeleteCascadeUserExt>(ret[0]);

View File

@ -1,8 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<IsPackable>false</IsPackable>
</PropertyGroup>

View File

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<IsPackable>false</IsPackable>
</PropertyGroup>

View File

@ -1,4 +1,4 @@
using FreeSql.DataAnnotations;
using FreeSql.DataAnnotations;
using System;
using System.Collections.Generic;
using System.Linq;
@ -850,8 +850,8 @@ WHERE (exists(SELECT 1
all = a,
count = (long)select.As("b").Sum(b => b.Id)
});
Assert.Equal(@"SELECT a.Id as1, a.Clicks as2, a.TypeGuid as3, a.Title as4, a.CreateTime as5, (SELECT sum(b.Id)
FROM tb_topic22 b) as6
Assert.Equal(@"SELECT a.Id as1, a.Clicks as2, a.TypeGuid as3, a.Title as4, a.CreateTime as5, nvl((SELECT sum(b.Id)
FROM tb_topic22 b), 0) as6
FROM tb_topic22 a", subquery);
var subqueryList = select.ToList(a => new
{
@ -867,8 +867,8 @@ FROM tb_topic22 a", subquery);
all = a,
count = select.As("b").Min(b => b.Id)
});
Assert.Equal(@"SELECT a.Id as1, a.Clicks as2, a.TypeGuid as3, a.Title as4, a.CreateTime as5, (SELECT min(b.Id)
FROM tb_topic22 b) as6
Assert.Equal(@"SELECT a.Id as1, a.Clicks as2, a.TypeGuid as3, a.Title as4, a.CreateTime as5, nvl((SELECT min(b.Id)
FROM tb_topic22 b), 0) as6
FROM tb_topic22 a", subquery);
var subqueryList = select.ToList(a => new
{
@ -884,8 +884,8 @@ FROM tb_topic22 a", subquery);
all = a,
count = select.As("b").Max(b => b.Id)
});
Assert.Equal(@"SELECT a.Id as1, a.Clicks as2, a.TypeGuid as3, a.Title as4, a.CreateTime as5, (SELECT max(b.Id)
FROM tb_topic22 b) as6
Assert.Equal(@"SELECT a.Id as1, a.Clicks as2, a.TypeGuid as3, a.Title as4, a.CreateTime as5, nvl((SELECT max(b.Id)
FROM tb_topic22 b), 0) as6
FROM tb_topic22 a", subquery);
var subqueryList = select.ToList(a => new
{
@ -901,8 +901,8 @@ FROM tb_topic22 a", subquery);
all = a,
count = select.As("b").Avg(b => b.Id)
});
Assert.Equal(@"SELECT a.Id as1, a.Clicks as2, a.TypeGuid as3, a.Title as4, a.CreateTime as5, (SELECT avg(b.Id)
FROM tb_topic22 b) as6
Assert.Equal(@"SELECT a.Id as1, a.Clicks as2, a.TypeGuid as3, a.Title as4, a.CreateTime as5, nvl((SELECT avg(b.Id)
FROM tb_topic22 b), 0) as6
FROM tb_topic22 a", subquery);
var subqueryList = select.ToList(a => new
{

View File

@ -1,8 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net5.0;netcoreapp3.1;</TargetFrameworks>
<TargetFrameworks>net6.0;netcoreapp3.1;</TargetFrameworks>
<IsPackable>false</IsPackable>
</PropertyGroup>

View File

@ -1070,8 +1070,8 @@ limit 0,10", t1);
all = a,
count = (long)select.As("b").Sum(b => b.Id)
});
Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, (SELECT sum(b.`Id`)
FROM `tb_topic` b) as6
Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, ifnull((SELECT sum(b.`Id`)
FROM `tb_topic` b), 0) as6
FROM `tb_topic` a", subquery);
var subqueryList = select.ToList(a => new
{
@ -1087,8 +1087,8 @@ FROM `tb_topic` a", subquery);
all = a,
count = select.As("b").Min(b => b.Id)
});
Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, (SELECT min(b.`Id`)
FROM `tb_topic` b) as6
Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, ifnull((SELECT min(b.`Id`)
FROM `tb_topic` b), 0) as6
FROM `tb_topic` a", subquery);
var subqueryList = select.ToList(a => new
{
@ -1104,8 +1104,8 @@ FROM `tb_topic` a", subquery);
all = a,
count = select.As("b").Max(b => b.Id)
});
Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, (SELECT max(b.`Id`)
FROM `tb_topic` b) as6
Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, ifnull((SELECT max(b.`Id`)
FROM `tb_topic` b), 0) as6
FROM `tb_topic` a", subquery);
var subqueryList = select.ToList(a => new
{
@ -1121,8 +1121,8 @@ FROM `tb_topic` a", subquery);
all = a,
count = select.As("b").Avg(b => b.Id)
});
Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, (SELECT avg(b.`Id`)
FROM `tb_topic` b) as6
Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, ifnull((SELECT avg(b.`Id`)
FROM `tb_topic` b), 0) as6
FROM `tb_topic` a", subquery);
var subqueryList = select.ToList(a => new
{

View File

@ -1,4 +1,4 @@
using FreeSql.DataAnnotations;
using FreeSql.DataAnnotations;
using System;
using System.Collections.Generic;
using System.Linq;
@ -822,7 +822,7 @@ namespace FreeSql.Tests.Odbc.Dameng
public void OrderByRandom()
{
var t1 = select.OrderByRandom().Limit(10).ToSql("1");
Assert.Equal(@"SELECT t.* FROM (SELECT 1
Assert.Equal(@"SELECT t.* FROM (SELECT 1
FROM ""TB_TOPIC22"" a
ORDER BY dbms_random.value) t WHERE ROWNUM < 11", t1);
var t2 = select.OrderByRandom().Limit(10).ToList();
@ -864,8 +864,8 @@ ORDER BY dbms_random.value) t WHERE ROWNUM < 11", t1);
all = a,
count = (long)select.As("b").Sum(b => b.Id)
});
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT sum(b.""ID"")
FROM ""TB_TOPIC22"" b) as6
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, nvl((SELECT sum(b.""ID"")
FROM ""TB_TOPIC22"" b), 0) as6
FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new
{
@ -881,8 +881,8 @@ FROM ""TB_TOPIC22"" a", subquery);
all = a,
count = select.As("b").Min(b => b.Id)
});
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT min(b.""ID"")
FROM ""TB_TOPIC22"" b) as6
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, nvl((SELECT min(b.""ID"")
FROM ""TB_TOPIC22"" b), 0) as6
FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new
{
@ -898,8 +898,8 @@ FROM ""TB_TOPIC22"" a", subquery);
all = a,
count = select.As("b").Max(b => b.Id)
});
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT max(b.""ID"")
FROM ""TB_TOPIC22"" b) as6
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, nvl((SELECT max(b.""ID"")
FROM ""TB_TOPIC22"" b), 0) as6
FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new
{
@ -915,8 +915,8 @@ FROM ""TB_TOPIC22"" a", subquery);
all = a,
count = select.As("b").Avg(b => b.Id)
});
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT avg(b.""ID"")
FROM ""TB_TOPIC22"" b) as6
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, nvl((SELECT avg(b.""ID"")
FROM ""TB_TOPIC22"" b), 0) as6
FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new
{
@ -1018,12 +1018,12 @@ WHERE (((to_char(a.""ID"")) in (SELECT b.""TITLE""
query = select.AsTable((_, old) => old).AsTable((_, old) => old);
sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT * from (SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a) ftb UNION ALL SELECT * from (SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a) ftb", sql);
Assert.Equal("SELECT * from (SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a) ftb UNION ALL SELECT * from (SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a) ftb", sql);
query.ToList();
query = select.AsTable((_, old) => old).AsTable((_, old) => old);
sql = query.ToSql("count(1) as1").Replace("\r\n", "");
Assert.Equal("SELECT * from (SELECT count(1) as1 FROM \"TB_TOPIC22\" a) ftb UNION ALL SELECT * from (SELECT count(1) as1 FROM \"TB_TOPIC22\" a) ftb", sql);
Assert.Equal("SELECT * from (SELECT count(1) as1 FROM \"TB_TOPIC22\" a) ftb UNION ALL SELECT * from (SELECT count(1) as1 FROM \"TB_TOPIC22\" a) ftb", sql);
query.Count();
select.AsTable((_, old) => old).AsTable((_, old) => old).Max(a => a.Id);

View File

@ -1,4 +1,4 @@
using FreeSql.DataAnnotations;
using FreeSql.DataAnnotations;
using System;
using System.Collections.Generic;
using System.Linq;
@ -829,8 +829,8 @@ namespace FreeSql.Tests.Odbc.Default
all = a,
count = (long)select.As("b").Sum(b => b.Id)
});
Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, (SELECT sum(b.[Id])
FROM [tb_topic22] b) as6
Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, isnull((SELECT sum(b.[Id])
FROM [tb_topic22] b), 0) as6
FROM [tb_topic22] a", subquery);
var subqueryList = select.ToList(a => new
{
@ -846,8 +846,8 @@ FROM [tb_topic22] a", subquery);
all = a,
count = select.As("b").Min(b => b.Id)
});
Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, (SELECT min(b.[Id])
FROM [tb_topic22] b) as6
Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, isnull((SELECT min(b.[Id])
FROM [tb_topic22] b), 0) as6
FROM [tb_topic22] a", subquery);
var subqueryList = select.ToList(a => new
{
@ -863,8 +863,8 @@ FROM [tb_topic22] a", subquery);
all = a,
count = select.As("b").Max(b => b.Id)
});
Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, (SELECT max(b.[Id])
FROM [tb_topic22] b) as6
Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, isnull((SELECT max(b.[Id])
FROM [tb_topic22] b), 0) as6
FROM [tb_topic22] a", subquery);
var subqueryList = select.ToList(a => new
{
@ -880,8 +880,8 @@ FROM [tb_topic22] a", subquery);
all = a,
count = select.As("b").Avg(b => b.Id)
});
Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, (SELECT avg(b.[Id])
FROM [tb_topic22] b) as6
Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, isnull((SELECT avg(b.[Id])
FROM [tb_topic22] b), 0) as6
FROM [tb_topic22] a", subquery);
var subqueryList = select.ToList(a => new
{

View File

@ -1,8 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<IsPackable>false</IsPackable>
</PropertyGroup>

View File

@ -1,4 +1,4 @@
using FreeSql.DataAnnotations;
using FreeSql.DataAnnotations;
using System;
using System.Collections.Generic;
using System.Linq;
@ -830,8 +830,8 @@ limit 10", t1);
all = a,
count = (long)select.As("b").Sum(b => b.Id)
});
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT sum(b.""ID"")
FROM ""TB_TOPIC22"" b) as6
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, coalesce((SELECT sum(b.""ID"")
FROM ""TB_TOPIC22"" b), 0) as6
FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new
{
@ -847,8 +847,8 @@ FROM ""TB_TOPIC22"" a", subquery);
all = a,
count = select.As("b").Min(b => b.Id)
});
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT min(b.""ID"")
FROM ""TB_TOPIC22"" b) as6
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, coalesce((SELECT min(b.""ID"")
FROM ""TB_TOPIC22"" b), 0) as6
FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new
{
@ -864,8 +864,8 @@ FROM ""TB_TOPIC22"" a", subquery);
all = a,
count = select.As("b").Max(b => b.Id)
});
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT max(b.""ID"")
FROM ""TB_TOPIC22"" b) as6
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, coalesce((SELECT max(b.""ID"")
FROM ""TB_TOPIC22"" b), 0) as6
FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new
{
@ -881,8 +881,8 @@ FROM ""TB_TOPIC22"" a", subquery);
all = a,
count = select.As("b").Avg(b => b.Id)
});
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT avg(b.""ID"")
FROM ""TB_TOPIC22"" b) as6
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, coalesce((SELECT avg(b.""ID"")
FROM ""TB_TOPIC22"" b), 0) as6
FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new
{

View File

@ -1,4 +1,4 @@
using FreeSql.DataAnnotations;
using FreeSql.DataAnnotations;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
@ -950,8 +950,8 @@ limit 0,10", t1);
all = a,
count = (long)select.As("b").Sum(b => b.Id)
});
Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, (SELECT sum(b.`Id`)
FROM `tb_topic` b) as6
Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, ifnull((SELECT sum(b.`Id`)
FROM `tb_topic` b), 0) as6
FROM `tb_topic` a", subquery);
var subqueryList = select.ToList(a => new
{
@ -967,8 +967,8 @@ FROM `tb_topic` a", subquery);
all = a,
count = select.As("b").Min(b => b.Id)
});
Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, (SELECT min(b.`Id`)
FROM `tb_topic` b) as6
Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, ifnull((SELECT min(b.`Id`)
FROM `tb_topic` b), 0) as6
FROM `tb_topic` a", subquery);
var subqueryList = select.ToList(a => new
{
@ -984,8 +984,8 @@ FROM `tb_topic` a", subquery);
all = a,
count = select.As("b").Max(b => b.Id)
});
Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, (SELECT max(b.`Id`)
FROM `tb_topic` b) as6
Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, ifnull((SELECT max(b.`Id`)
FROM `tb_topic` b), 0) as6
FROM `tb_topic` a", subquery);
var subqueryList = select.ToList(a => new
{
@ -1001,8 +1001,8 @@ FROM `tb_topic` a", subquery);
all = a,
count = select.As("b").Avg(b => b.Id)
});
Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, (SELECT avg(b.`Id`)
FROM `tb_topic` b) as6
Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, ifnull((SELECT avg(b.`Id`)
FROM `tb_topic` b), 0) as6
FROM `tb_topic` a", subquery);
var subqueryList = select.ToList(a => new
{

View File

@ -1,4 +1,4 @@
using FreeSql.DataAnnotations;
using FreeSql.DataAnnotations;
using System;
using System.Collections.Generic;
using System.Linq;
@ -823,7 +823,7 @@ namespace FreeSql.Tests.Odbc.Oracle
public void OrderByRandom()
{
var t1 = select.OrderByRandom().Limit(10).ToSql("1");
Assert.Equal(@"SELECT t.* FROM (SELECT 1
Assert.Equal(@"SELECT t.* FROM (SELECT 1
FROM ""TB_TOPIC22"" a
ORDER BY dbms_random.value) t WHERE ROWNUM < 11", t1);
var t2 = select.OrderByRandom().Limit(10).ToList();
@ -865,8 +865,8 @@ ORDER BY dbms_random.value) t WHERE ROWNUM < 11", t1);
all = a,
count = (long)select.As("b").Sum(b => b.Id)
});
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT sum(b.""ID"")
FROM ""TB_TOPIC22"" b) as6
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, nvl((SELECT sum(b.""ID"")
FROM ""TB_TOPIC22"" b), 0) as6
FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new
{
@ -882,8 +882,8 @@ FROM ""TB_TOPIC22"" a", subquery);
all = a,
count = select.As("b").Min(b => b.Id)
});
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT min(b.""ID"")
FROM ""TB_TOPIC22"" b) as6
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, nvl((SELECT min(b.""ID"")
FROM ""TB_TOPIC22"" b), 0) as6
FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new
{
@ -899,8 +899,8 @@ FROM ""TB_TOPIC22"" a", subquery);
all = a,
count = select.As("b").Max(b => b.Id)
});
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT max(b.""ID"")
FROM ""TB_TOPIC22"" b) as6
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, nvl((SELECT max(b.""ID"")
FROM ""TB_TOPIC22"" b), 0) as6
FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new
{
@ -916,13 +916,13 @@ FROM ""TB_TOPIC22"" a", subquery);
all = a,
count = select.As("b").Avg(b => b.Id)
});
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT avg(b.""ID"")
FROM ""TB_TOPIC22"" b) as6
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, nvl((SELECT avg(b.""ID"")
FROM ""TB_TOPIC22"" b), 0) as6
FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new
var subqueryList = select.Limit(10).ToList(a => new
{
all = a,
count = select.As("b").Avg(b => b.Id)
count = select.As("b").Limit(10).Avg(b => b.Id)
});
}
[Fact]
@ -1019,12 +1019,12 @@ WHERE (((to_char(a.""ID"")) in (SELECT b.""TITLE""
query = select.AsTable((_, old) => old).AsTable((_, old) => old);
sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT * from (SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a) ftb UNION ALL SELECT * from (SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a) ftb", sql);
Assert.Equal("SELECT * from (SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a) ftb UNION ALL SELECT * from (SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a) ftb", sql);
query.ToList();
query = select.AsTable((_, old) => old).AsTable((_, old) => old);
sql = query.ToSql("count(1) as1").Replace("\r\n", "");
Assert.Equal("SELECT * from (SELECT count(1) as1 FROM \"TB_TOPIC22\" a) ftb UNION ALL SELECT * from (SELECT count(1) as1 FROM \"TB_TOPIC22\" a) ftb", sql);
Assert.Equal("SELECT * from (SELECT count(1) as1 FROM \"TB_TOPIC22\" a) ftb UNION ALL SELECT * from (SELECT count(1) as1 FROM \"TB_TOPIC22\" a) ftb", sql);
query.Count();
select.AsTable((_, old) => old).AsTable((_, old) => old).Max(a => a.Id);

View File

@ -1,4 +1,4 @@
using FreeSql.DataAnnotations;
using FreeSql.DataAnnotations;
using System;
using System.Collections.Generic;
using System.Linq;
@ -926,8 +926,8 @@ limit 10", t1);
all = a,
count = (long)select.As("b").Sum(b => b.Id)
});
Assert.Equal(@"SELECT a.""id"" as1, a.""clicks"" as2, a.""typeguid"" as3, a.""title"" as4, a.""createtime"" as5, (SELECT sum(b.""id"")
FROM ""tb_topic"" b) as6
Assert.Equal(@"SELECT a.""id"" as1, a.""clicks"" as2, a.""typeguid"" as3, a.""title"" as4, a.""createtime"" as5, coalesce((SELECT sum(b.""id"")
FROM ""tb_topic"" b), 0) as6
FROM ""tb_topic"" a", subquery);
var subqueryList = select.ToList(a => new
{
@ -943,8 +943,8 @@ FROM ""tb_topic"" a", subquery);
all = a,
count = select.As("b").Min(b => b.Id)
});
Assert.Equal(@"SELECT a.""id"" as1, a.""clicks"" as2, a.""typeguid"" as3, a.""title"" as4, a.""createtime"" as5, (SELECT min(b.""id"")
FROM ""tb_topic"" b) as6
Assert.Equal(@"SELECT a.""id"" as1, a.""clicks"" as2, a.""typeguid"" as3, a.""title"" as4, a.""createtime"" as5, coalesce((SELECT min(b.""id"")
FROM ""tb_topic"" b), 0) as6
FROM ""tb_topic"" a", subquery);
var subqueryList = select.ToList(a => new
{
@ -960,8 +960,8 @@ FROM ""tb_topic"" a", subquery);
all = a,
count = select.As("b").Max(b => b.Id)
});
Assert.Equal(@"SELECT a.""id"" as1, a.""clicks"" as2, a.""typeguid"" as3, a.""title"" as4, a.""createtime"" as5, (SELECT max(b.""id"")
FROM ""tb_topic"" b) as6
Assert.Equal(@"SELECT a.""id"" as1, a.""clicks"" as2, a.""typeguid"" as3, a.""title"" as4, a.""createtime"" as5, coalesce((SELECT max(b.""id"")
FROM ""tb_topic"" b), 0) as6
FROM ""tb_topic"" a", subquery);
var subqueryList = select.ToList(a => new
{
@ -977,8 +977,8 @@ FROM ""tb_topic"" a", subquery);
all = a,
count = select.As("b").Avg(b => b.Id)
});
Assert.Equal(@"SELECT a.""id"" as1, a.""clicks"" as2, a.""typeguid"" as3, a.""title"" as4, a.""createtime"" as5, (SELECT avg(b.""id"")
FROM ""tb_topic"" b) as6
Assert.Equal(@"SELECT a.""id"" as1, a.""clicks"" as2, a.""typeguid"" as3, a.""title"" as4, a.""createtime"" as5, coalesce((SELECT avg(b.""id"")
FROM ""tb_topic"" b), 0) as6
FROM ""tb_topic"" a", subquery);
var subqueryList = select.ToList(a => new
{

View File

@ -820,8 +820,8 @@ ORDER BY newid()", t1);
all = a,
count = (long)select.As("b").Sum(b => b.Id)
});
Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, (SELECT sum(b.[Id])
FROM [tb_topic22] b) as6
Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, isnull((SELECT sum(b.[Id])
FROM [tb_topic22] b), 0) as6
FROM [tb_topic22] a", subquery);
var subqueryList = select.ToList(a => new
{
@ -837,8 +837,8 @@ FROM [tb_topic22] a", subquery);
all = a,
count = select.As("b").Min(b => b.Id)
});
Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, (SELECT min(b.[Id])
FROM [tb_topic22] b) as6
Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, isnull((SELECT min(b.[Id])
FROM [tb_topic22] b), 0) as6
FROM [tb_topic22] a", subquery);
var subqueryList = select.ToList(a => new
{
@ -854,8 +854,8 @@ FROM [tb_topic22] a", subquery);
all = a,
count = select.As("b").Max(b => b.Id)
});
Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, (SELECT max(b.[Id])
FROM [tb_topic22] b) as6
Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, isnull((SELECT max(b.[Id])
FROM [tb_topic22] b), 0) as6
FROM [tb_topic22] a", subquery);
var subqueryList = select.ToList(a => new
{
@ -871,8 +871,8 @@ FROM [tb_topic22] a", subquery);
all = a,
count = select.As("b").Avg(b => b.Id)
});
Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, (SELECT avg(b.[Id])
FROM [tb_topic22] b) as6
Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, isnull((SELECT avg(b.[Id])
FROM [tb_topic22] b), 0) as6
FROM [tb_topic22] a", subquery);
var subqueryList = select.ToList(a => new
{

View File

@ -1,8 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<IsPackable>false</IsPackable>
</PropertyGroup>
@ -12,6 +11,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Npgsql.NetTopologySuite" Version="6.0.4" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.8.0" />
<PackageReference Include="xunit" Version="2.4.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">

View File

@ -1,4 +1,4 @@
using FreeSql.DataAnnotations;
using FreeSql.DataAnnotations;
using NetTopologySuite.Geometries;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
@ -11,7 +11,9 @@ using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Net;
using System.Net.NetworkInformation;
using System.Numerics;
using System.Text;
using System.Text.RegularExpressions;
using Xunit;
namespace FreeSql.Tests.PostgreSQL.NetTopologySuite
@ -19,11 +21,65 @@ namespace FreeSql.Tests.PostgreSQL.NetTopologySuite
public class PostgreSQLCodeFirstTest
{
[Fact]
public void UInt256Crud2()
{
var fsql = g.pgsql;
fsql.Aop.AuditDataReader += (_, e) =>
{
var dbtype = e.DataReader.GetDataTypeName(e.Index);
var m = Regex.Match(dbtype, @"numeric\((\d+)\)", RegexOptions.IgnoreCase);
if (m.Success && int.Parse(m.Groups[1].Value) > 19)
e.Value = e.DataReader.GetFieldValue<BigInteger>(e.Index); //否则会报溢出错误
};
var num = BigInteger.Parse("57896044618658097711785492504343953926634992332820282019728792003956564819968");
fsql.Delete<tuint256tb_01>().Where("1=1").ExecuteAffrows();
Assert.Equal(1, fsql.Insert(new tuint256tb_01()).ExecuteAffrows());
var find = fsql.Select<tuint256tb_01>().ToList();
Assert.Single(find);
Assert.Equal("0", find[0].Number.ToString());
var item = new tuint256tb_01 { Number = num };
Assert.Equal(1, fsql.Insert(item).ExecuteAffrows());
find = fsql.Select<tuint256tb_01>().Where(a => a.Id == item.Id).ToList();
Assert.Single(find);
Assert.Equal(item.Number, find[0].Number);
num = num - 1;
item.Number = num;
Assert.Equal(1, fsql.Update<tuint256tb_01>().SetSource(item).ExecuteAffrows());
find = fsql.Select<tuint256tb_01>().Where(a => a.Id == item.Id).ToList();
Assert.Single(find);
Assert.Equal("57896044618658097711785492504343953926634992332820282019728792003956564819967", find[0].Number.ToString());
num = BigInteger.Parse("57896044618658097711785492504343953926634992332820282019728792003956564819968");
fsql.Delete<tuint256tb_01>().Where("1=1").ExecuteAffrows();
Assert.Equal(1, fsql.Insert(new tuint256tb_01()).NoneParameter().ExecuteAffrows());
find = fsql.Select<tuint256tb_01>().ToList();
Assert.Single(find);
Assert.Equal("0", find[0].Number.ToString());
item = new tuint256tb_01 { Number = num };
Assert.Equal(1, fsql.Insert(item).NoneParameter().ExecuteAffrows());
find = fsql.Select<tuint256tb_01>().Where(a => a.Id == item.Id).ToList();
Assert.Single(find);
Assert.Equal(item.Number, find[0].Number);
num = num - 1;
item.Number = num;
Assert.Equal(1, fsql.Update<tuint256tb_01>().NoneParameter().SetSource(item).ExecuteAffrows());
find = fsql.Select<tuint256tb_01>().Where(a => a.Id == item.Id).ToList();
Assert.Single(find);
Assert.Equal("57896044618658097711785492504343953926634992332820282019728792003956564819967", find[0].Number.ToString());
}
class tuint256tb_01
{
public Guid Id { get; set; }
public BigInteger Number { get; set; }
}
[Fact]
public void GetComparisonDDLStatements()
{
var sql = g.pgsql.CodeFirst.GetComparisonDDLStatements<TableAllType>();
Assert.True(string.IsNullOrEmpty(sql)); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD>
Assert.True(string.IsNullOrEmpty(sql)); //测试运行两次后
g.pgsql.Select<TableAllType>();
}
@ -43,8 +99,8 @@ namespace FreeSql.Tests.PostgreSQL.NetTopologySuite
var item2 = new TableAllType
{
testFieldBitArray = new BitArray(Encoding.UTF8.GetBytes("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>")),
testFieldBitArrayArray = new[] { new BitArray(Encoding.UTF8.GetBytes("<EFBFBD>й<EFBFBD>")), new BitArray(Encoding.UTF8.GetBytes("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>")) },
testFieldBitArray = new BitArray(Encoding.UTF8.GetBytes("我是")),
testFieldBitArrayArray = new[] { new BitArray(Encoding.UTF8.GetBytes("中国")), new BitArray(Encoding.UTF8.GetBytes("公民")) },
testFieldBool = true,
testFieldBoolArray = new[] { true, true, false, false },
testFieldBoolArrayNullable = new bool?[] { true, true, null, false, false },
@ -53,8 +109,8 @@ namespace FreeSql.Tests.PostgreSQL.NetTopologySuite
testFieldByteArray = new byte[] { 0, 1, 2, 3, 4, 5, 6 },
testFieldByteArrayNullable = new byte?[] { 0, 1, 2, 3, null, 4, 5, 6 },
testFieldByteNullable = byte.MinValue,
testFieldBytes = Encoding.UTF8.GetBytes("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><EFBFBD><EFBFBD>"),
testFieldBytesArray = new[] { Encoding.UTF8.GetBytes("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><EFBFBD><EFBFBD>"), Encoding.UTF8.GetBytes("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><EFBFBD><EFBFBD>") },
testFieldBytes = Encoding.UTF8.GetBytes("我是中国人"),
testFieldBytesArray = new[] { Encoding.UTF8.GetBytes("我是中国人"), Encoding.UTF8.GetBytes("我是中国人") },
testFieldCidr = (IPAddress.Parse("10.0.0.0"), 8),
testFieldCidrArray = new[] { (IPAddress.Parse("10.0.0.0"), 8), (IPAddress.Parse("192.168.0.0"), 16) },
testFieldCidrArrayNullable = new (IPAddress, int)?[] { (IPAddress.Parse("10.0.0.0"), 8), null, (IPAddress.Parse("192.168.0.0"), 16) },
@ -229,9 +285,9 @@ namespace FreeSql.Tests.PostgreSQL.NetTopologySuite
testFieldShortArray = new short[] { 1, 2, 3, 4, 5 },
testFieldShortArrayNullable = new short?[] { 1, 2, 3, null, 4, 5 },
testFieldShortNullable = short.MinValue,
testFieldString = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><EFBFBD><EFBFBD>string'\\?!@#$%^&*()_+{}}{~?><<>",
testFieldString = "我是中国人string'\\?!@#$%^&*()_+{}}{~?><<>",
testFieldChar = 'X',
testFieldStringArray = new[] { "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><EFBFBD><EFBFBD>String1", "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><EFBFBD><EFBFBD>String2", null, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><EFBFBD><EFBFBD>String3" },
testFieldStringArray = new[] { "我是中国人String1", "我是中国人String2", null, "我是中国人String3" },
testFieldTimeSpan = TimeSpan.FromDays(1),
testFieldTimeSpanArray = new[] { TimeSpan.FromDays(1), TimeSpan.FromSeconds(10), TimeSpan.FromSeconds(60) },
testFieldTimeSpanArrayNullable = new TimeSpan?[] { TimeSpan.FromDays(1), TimeSpan.FromSeconds(10), null, TimeSpan.FromSeconds(60) },

View File

@ -3,7 +3,6 @@
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
</PropertyGroup>

View File

@ -871,8 +871,8 @@ limit 0,10", t1);
all = a,
count = (long)select.As("b").Sum(b => b.Id)
});
Assert.Equal(@"SELECT a.""Id"" as1, a.""Clicks"" as2, a.""TypeGuid"" as3, a.""Title"" as4, a.""CreateTime"" as5, (SELECT sum(b.""Id"")
FROM ""tb_topic22"" b) as6
Assert.Equal(@"SELECT a.""Id"" as1, a.""Clicks"" as2, a.""TypeGuid"" as3, a.""Title"" as4, a.""CreateTime"" as5, ifnull((SELECT sum(b.""Id"")
FROM ""tb_topic22"" b), 0) as6
FROM ""tb_topic22"" a", subquery);
var subqueryList = select.ToList(a => new
{
@ -888,8 +888,8 @@ FROM ""tb_topic22"" a", subquery);
all = a,
count = select.As("b").Min(b => b.Id)
});
Assert.Equal(@"SELECT a.""Id"" as1, a.""Clicks"" as2, a.""TypeGuid"" as3, a.""Title"" as4, a.""CreateTime"" as5, (SELECT min(b.""Id"")
FROM ""tb_topic22"" b) as6
Assert.Equal(@"SELECT a.""Id"" as1, a.""Clicks"" as2, a.""TypeGuid"" as3, a.""Title"" as4, a.""CreateTime"" as5, ifnull((SELECT min(b.""Id"")
FROM ""tb_topic22"" b), 0) as6
FROM ""tb_topic22"" a", subquery);
var subqueryList = select.ToList(a => new
{
@ -905,8 +905,8 @@ FROM ""tb_topic22"" a", subquery);
all = a,
count = select.As("b").Max(b => b.Id)
});
Assert.Equal(@"SELECT a.""Id"" as1, a.""Clicks"" as2, a.""TypeGuid"" as3, a.""Title"" as4, a.""CreateTime"" as5, (SELECT max(b.""Id"")
FROM ""tb_topic22"" b) as6
Assert.Equal(@"SELECT a.""Id"" as1, a.""Clicks"" as2, a.""TypeGuid"" as3, a.""Title"" as4, a.""CreateTime"" as5, ifnull((SELECT max(b.""Id"")
FROM ""tb_topic22"" b), 0) as6
FROM ""tb_topic22"" a", subquery);
var subqueryList = select.ToList(a => new
{
@ -922,8 +922,8 @@ FROM ""tb_topic22"" a", subquery);
all = a,
count = select.As("b").Avg(b => b.Id)
});
Assert.Equal(@"SELECT a.""Id"" as1, a.""Clicks"" as2, a.""TypeGuid"" as3, a.""Title"" as4, a.""CreateTime"" as5, (SELECT avg(b.""Id"")
FROM ""tb_topic22"" b) as6
Assert.Equal(@"SELECT a.""Id"" as1, a.""Clicks"" as2, a.""TypeGuid"" as3, a.""Title"" as4, a.""CreateTime"" as5, ifnull((SELECT avg(b.""Id"")
FROM ""tb_topic22"" b), 0) as6
FROM ""tb_topic22"" a", subquery);
var subqueryList = select.ToList(a => new
{

View File

@ -955,7 +955,7 @@ WHERE (((a.""NAME"") in (SELECT s.""TITLE"" as1
public void OrderByRandom()
{
var t1 = select.OrderByRandom().Limit(10).ToSql("1");
Assert.Equal(@"SELECT t.* FROM (SELECT 1
Assert.Equal(@"SELECT t.* FROM (SELECT 1
FROM ""TB_TOPIC22"" a
ORDER BY dbms_random.value) t WHERE ROWNUM < 11", t1);
var t2 = select.OrderByRandom().Limit(10).ToList();
@ -997,8 +997,8 @@ ORDER BY dbms_random.value) t WHERE ROWNUM < 11", t1);
all = a,
count = (long)select.As("b").Sum(b => b.Id)
});
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT sum(b.""ID"")
FROM ""TB_TOPIC22"" b) as6
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, nvl((SELECT sum(b.""ID"")
FROM ""TB_TOPIC22"" b), 0) as6
FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new
{
@ -1014,8 +1014,8 @@ FROM ""TB_TOPIC22"" a", subquery);
all = a,
count = select.As("b").Min(b => b.Id)
});
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT min(b.""ID"")
FROM ""TB_TOPIC22"" b) as6
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, nvl((SELECT min(b.""ID"")
FROM ""TB_TOPIC22"" b), 0) as6
FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new
{
@ -1031,8 +1031,8 @@ FROM ""TB_TOPIC22"" a", subquery);
all = a,
count = select.As("b").Max(b => b.Id)
});
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT max(b.""ID"")
FROM ""TB_TOPIC22"" b) as6
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, nvl((SELECT max(b.""ID"")
FROM ""TB_TOPIC22"" b), 0) as6
FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new
{
@ -1048,8 +1048,8 @@ FROM ""TB_TOPIC22"" a", subquery);
all = a,
count = select.As("b").Avg(b => b.Id)
});
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT avg(b.""ID"")
FROM ""TB_TOPIC22"" b) as6
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, nvl((SELECT avg(b.""ID"")
FROM ""TB_TOPIC22"" b), 0) as6
FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new
{
@ -1154,12 +1154,12 @@ WHERE (((to_char(a.""ID"")) in (SELECT b.""TITLE""
query = select.AsTable((_, old) => old).AsTable((_, old) => old);
sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT * from (SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a) ftb UNION ALL SELECT * from (SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a) ftb", sql);
Assert.Equal("SELECT * from (SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a) ftb UNION ALL SELECT * from (SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a) ftb", sql);
query.ToList();
query = select.AsTable((_, old) => old).AsTable((_, old) => old);
sql = query.ToSql("count(1) as1").Replace("\r\n", "");
Assert.Equal("SELECT * from (SELECT count(1) as1 FROM \"TB_TOPIC22\" a) ftb UNION ALL SELECT * from (SELECT count(1) as1 FROM \"TB_TOPIC22\" a) ftb", sql);
Assert.Equal("SELECT * from (SELECT count(1) as1 FROM \"TB_TOPIC22\" a) ftb UNION ALL SELECT * from (SELECT count(1) as1 FROM \"TB_TOPIC22\" a) ftb", sql);
query.Count();
select.AsTable((_, old) => old).AsTable((_, old) => old).Max(a => a.Id);

View File

@ -1,14 +1,7 @@
using FreeSql.DataAnnotations;
using FreeSql;
using FreeSql.Internal;
using System;
using System.Collections.Generic;
using Xunit;
using System.Linq;
using Newtonsoft.Json.Linq;
using NpgsqlTypes;
using Npgsql.LegacyPostgis;
using FreeSql.Internal;
using System.Linq.Expressions;
using Xunit;
namespace FreeSql.ExpressionTree
{

View File

@ -980,8 +980,8 @@ ORDER BY rand()", t1);
all = a,
count = (long)select.As("b").Sum(b => b.Id)
});
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT sum(b.""ID"")
FROM ""TB_TOPIC22"" b) as6
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, coalesce((SELECT sum(b.""ID"")
FROM ""TB_TOPIC22"" b), 0) as6
FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new
{
@ -997,8 +997,8 @@ FROM ""TB_TOPIC22"" a", subquery);
all = a,
count = select.As("b").Min(b => b.Id)
});
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT min(b.""ID"")
FROM ""TB_TOPIC22"" b) as6
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, coalesce((SELECT min(b.""ID"")
FROM ""TB_TOPIC22"" b), 0) as6
FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new
{
@ -1014,8 +1014,8 @@ FROM ""TB_TOPIC22"" a", subquery);
all = a,
count = select.As("b").Max(b => b.Id)
});
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT max(b.""ID"")
FROM ""TB_TOPIC22"" b) as6
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, coalesce((SELECT max(b.""ID"")
FROM ""TB_TOPIC22"" b), 0) as6
FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new
{
@ -1031,8 +1031,8 @@ FROM ""TB_TOPIC22"" a", subquery);
all = a,
count = select.As("b").Avg(b => b.Id)
});
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT avg(b.""ID"")
FROM ""TB_TOPIC22"" b) as6
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, coalesce((SELECT avg(b.""ID"")
FROM ""TB_TOPIC22"" b), 0) as6
FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new
{

View File

@ -0,0 +1,258 @@
using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Data.SqlClient;
using Xunit;
namespace FreeSql.Tests.Internal
{
public class CommonExpressionTest
{
[Fact]
public void IIFTest01()
{
var fsql = g.sqlite;
var sql = "";
var sb = new StringBuilder();
sql = fsql.Select<IIFTest01Model>().Where(a => a.Bool == true).ToSql();
Assert.Equal(@"SELECT a.""Id"", a.""Bool"", a.""BoolNullable""
FROM ""IIFTest01Model"" a
WHERE (a.""Bool"" = 1)", sql);
sql = fsql.Select<IIFTest01Model>().Where(a => a.Bool != true).ToSql();
Assert.Equal(@"SELECT a.""Id"", a.""Bool"", a.""BoolNullable""
FROM ""IIFTest01Model"" a
WHERE (a.""Bool"" <> 1)", sql);
sql = fsql.Select<IIFTest01Model>().Where(a => a.Bool == false).ToSql();
Assert.Equal(@"SELECT a.""Id"", a.""Bool"", a.""BoolNullable""
FROM ""IIFTest01Model"" a
WHERE (a.""Bool"" = 0)", sql);
sql = fsql.Select<IIFTest01Model>().Where(a => !a.Bool).ToSql();
Assert.Equal(@"SELECT a.""Id"", a.""Bool"", a.""BoolNullable""
FROM ""IIFTest01Model"" a
WHERE (a.""Bool"" = 0)", sql);
sql = fsql.Select<IIFTest01Model>().Where(a => a.Bool).ToSql();
Assert.Equal(@"SELECT a.""Id"", a.""Bool"", a.""BoolNullable""
FROM ""IIFTest01Model"" a
WHERE (a.""Bool"" = 1)", sql);
sql = fsql.Select<IIFTest01Model>().WhereCascade(a => a.Bool).Limit(10).ToSql();
Assert.Equal(@"SELECT a.""Id"", a.""Bool"", a.""BoolNullable""
FROM ""IIFTest01Model"" a
WHERE (a.""Bool"" = 1)
limit 0,10", sql);
sql = fsql.Select<IIFTest01Model>().Where(a => a.BoolNullable == true).ToSql();
Assert.Equal(@"SELECT a.""Id"", a.""Bool"", a.""BoolNullable""
FROM ""IIFTest01Model"" a
WHERE (a.""BoolNullable"" = 1)", sql);
sql = fsql.Select<IIFTest01Model>().Where(a => a.BoolNullable != true).ToSql();
Assert.Equal(@"SELECT a.""Id"", a.""Bool"", a.""BoolNullable""
FROM ""IIFTest01Model"" a
WHERE (a.""BoolNullable"" <> 1)", sql);
sql = fsql.Select<IIFTest01Model>().Where(a => a.BoolNullable == false).ToSql();
Assert.Equal(@"SELECT a.""Id"", a.""Bool"", a.""BoolNullable""
FROM ""IIFTest01Model"" a
WHERE (a.""BoolNullable"" = 0)", sql);
sql = fsql.Select<IIFTest01Model>().Where(a => !a.BoolNullable.Value).ToSql();
Assert.Equal(@"SELECT a.""Id"", a.""Bool"", a.""BoolNullable""
FROM ""IIFTest01Model"" a
WHERE (a.""BoolNullable"" = 0)", sql);
sql = fsql.Select<IIFTest01Model>().Where(a => a.BoolNullable.Value).ToSql();
Assert.Equal(@"SELECT a.""Id"", a.""Bool"", a.""BoolNullable""
FROM ""IIFTest01Model"" a
WHERE (a.""BoolNullable"" = 1)", sql);
sql = fsql.Select<IIFTest01Model>().Where(a => a.Bool == true && a.Id > 0).ToSql();
Assert.Equal(@"SELECT a.""Id"", a.""Bool"", a.""BoolNullable""
FROM ""IIFTest01Model"" a
WHERE (a.""Bool"" = 1 AND a.""Id"" > 0)", sql);
sql = fsql.Select<IIFTest01Model>().Where(a => a.Bool != true && a.Id > 0).ToSql();
Assert.Equal(@"SELECT a.""Id"", a.""Bool"", a.""BoolNullable""
FROM ""IIFTest01Model"" a
WHERE (a.""Bool"" <> 1 AND a.""Id"" > 0)", sql);
sql = fsql.Select<IIFTest01Model>().Where(a => a.Bool == false && a.Id > 0).ToSql();
Assert.Equal(@"SELECT a.""Id"", a.""Bool"", a.""BoolNullable""
FROM ""IIFTest01Model"" a
WHERE (a.""Bool"" = 0 AND a.""Id"" > 0)", sql);
sql = fsql.Select<IIFTest01Model>().Where(a => !a.Bool && a.Id > 0).ToSql();
Assert.Equal(@"SELECT a.""Id"", a.""Bool"", a.""BoolNullable""
FROM ""IIFTest01Model"" a
WHERE (a.""Bool"" = 0 AND a.""Id"" > 0)", sql);
sql = fsql.Select<IIFTest01Model>().Where(a => a.Bool && a.Id > 0).ToSql();
Assert.Equal(@"SELECT a.""Id"", a.""Bool"", a.""BoolNullable""
FROM ""IIFTest01Model"" a
WHERE (a.""Bool"" = 1 AND a.""Id"" > 0)", sql);
sql = fsql.Select<IIFTest01Model>().Where(a => a.BoolNullable == true && a.Id > 0).ToSql();
Assert.Equal(@"SELECT a.""Id"", a.""Bool"", a.""BoolNullable""
FROM ""IIFTest01Model"" a
WHERE (a.""BoolNullable"" = 1 AND a.""Id"" > 0)", sql);
sql = fsql.Select<IIFTest01Model>().Where(a => a.BoolNullable != true && a.Id > 0).ToSql();
Assert.Equal(@"SELECT a.""Id"", a.""Bool"", a.""BoolNullable""
FROM ""IIFTest01Model"" a
WHERE (a.""BoolNullable"" <> 1 AND a.""Id"" > 0)", sql);
sql = fsql.Select<IIFTest01Model>().Where(a => a.BoolNullable == false && a.Id > 0).ToSql();
Assert.Equal(@"SELECT a.""Id"", a.""Bool"", a.""BoolNullable""
FROM ""IIFTest01Model"" a
WHERE (a.""BoolNullable"" = 0 AND a.""Id"" > 0)", sql);
sql = fsql.Select<IIFTest01Model>().Where(a => !a.BoolNullable.Value && a.Id > 0).ToSql();
Assert.Equal(@"SELECT a.""Id"", a.""Bool"", a.""BoolNullable""
FROM ""IIFTest01Model"" a
WHERE (a.""BoolNullable"" = 0 AND a.""Id"" > 0)", sql);
sql = fsql.Select<IIFTest01Model>().Where(a => a.BoolNullable.Value && a.Id > 0).ToSql();
Assert.Equal(@"SELECT a.""Id"", a.""Bool"", a.""BoolNullable""
FROM ""IIFTest01Model"" a
WHERE (a.""BoolNullable"" = 1 AND a.""Id"" > 0)", sql);
sql = fsql.Select<IIFTest01Model>().Where(a => a.Bool == true && a.Id > 0 && a.Bool == true).ToSql();
Assert.Equal(@"SELECT a.""Id"", a.""Bool"", a.""BoolNullable""
FROM ""IIFTest01Model"" a
WHERE (a.""Bool"" = 1 AND a.""Id"" > 0 AND a.""Bool"" = 1)", sql);
sql = fsql.Select<IIFTest01Model>().Where(a => a.Bool != true && a.Id > 0 && a.Bool != true).ToSql();
Assert.Equal(@"SELECT a.""Id"", a.""Bool"", a.""BoolNullable""
FROM ""IIFTest01Model"" a
WHERE (a.""Bool"" <> 1 AND a.""Id"" > 0 AND a.""Bool"" <> 1)", sql);
sql = fsql.Select<IIFTest01Model>().Where(a => a.Bool == false && a.Id > 0 && a.Bool == false).ToSql();
Assert.Equal(@"SELECT a.""Id"", a.""Bool"", a.""BoolNullable""
FROM ""IIFTest01Model"" a
WHERE (a.""Bool"" = 0 AND a.""Id"" > 0 AND a.""Bool"" = 0)", sql);
sql = fsql.Select<IIFTest01Model>().Where(a => !a.Bool && a.Id > 0 && !a.Bool).ToSql();
Assert.Equal(@"SELECT a.""Id"", a.""Bool"", a.""BoolNullable""
FROM ""IIFTest01Model"" a
WHERE (a.""Bool"" = 0 AND a.""Id"" > 0 AND a.""Bool"" = 0)", sql);
sql = fsql.Select<IIFTest01Model>().Where(a => a.Bool && a.Id > 0 && a.Bool).ToSql();
Assert.Equal(@"SELECT a.""Id"", a.""Bool"", a.""BoolNullable""
FROM ""IIFTest01Model"" a
WHERE (a.""Bool"" = 1 AND a.""Id"" > 0 AND a.""Bool"" = 1)", sql);
sql = fsql.Select<IIFTest01Model>().Where(a => a.BoolNullable == true && a.Id > 0 && a.BoolNullable == true).ToSql();
Assert.Equal(@"SELECT a.""Id"", a.""Bool"", a.""BoolNullable""
FROM ""IIFTest01Model"" a
WHERE (a.""BoolNullable"" = 1 AND a.""Id"" > 0 AND a.""BoolNullable"" = 1)", sql);
sql = fsql.Select<IIFTest01Model>().Where(a => a.BoolNullable != true && a.Id > 0 && a.BoolNullable != true).ToSql();
Assert.Equal(@"SELECT a.""Id"", a.""Bool"", a.""BoolNullable""
FROM ""IIFTest01Model"" a
WHERE (a.""BoolNullable"" <> 1 AND a.""Id"" > 0 AND a.""BoolNullable"" <> 1)", sql);
sql = fsql.Select<IIFTest01Model>().Where(a => a.BoolNullable == false && a.Id > 0 && a.BoolNullable == false).ToSql();
Assert.Equal(@"SELECT a.""Id"", a.""Bool"", a.""BoolNullable""
FROM ""IIFTest01Model"" a
WHERE (a.""BoolNullable"" = 0 AND a.""Id"" > 0 AND a.""BoolNullable"" = 0)", sql);
sql = fsql.Select<IIFTest01Model>().Where(a => !a.BoolNullable.Value && a.Id > 0 && !a.BoolNullable.Value).ToSql();
Assert.Equal(@"SELECT a.""Id"", a.""Bool"", a.""BoolNullable""
FROM ""IIFTest01Model"" a
WHERE (a.""BoolNullable"" = 0 AND a.""Id"" > 0 AND a.""BoolNullable"" = 0)", sql);
sql = fsql.Select<IIFTest01Model>().Where(a => a.BoolNullable.Value && a.Id > 0 && a.BoolNullable.Value).ToSql();
Assert.Equal(@"SELECT a.""Id"", a.""Bool"", a.""BoolNullable""
FROM ""IIFTest01Model"" a
WHERE (a.""BoolNullable"" = 1 AND a.""Id"" > 0 AND a.""BoolNullable"" = 1)", sql);
// IIF
sql = fsql.Select<IIFTest01Model>().ToSql(a => a.Bool == true ? 10 : 11);
Assert.Equal(@"SELECT (case when a.""Bool"" = 1 then 10 else 11 end) as1
FROM ""IIFTest01Model"" a", sql);
sql = fsql.Select<IIFTest01Model>().ToSql(a => a.Bool != true ? 10 : 11);
Assert.Equal(@"SELECT (case when a.""Bool"" <> 1 then 10 else 11 end) as1
FROM ""IIFTest01Model"" a", sql);
sql = fsql.Select<IIFTest01Model>().ToSql(a => a.Bool == false ? 10 : 11);
Assert.Equal(@"SELECT (case when a.""Bool"" = 0 then 10 else 11 end) as1
FROM ""IIFTest01Model"" a", sql);
sql = fsql.Select<IIFTest01Model>().ToSql(a => !a.Bool ? 10 : 11);
Assert.Equal(@"SELECT (case when a.""Bool"" = 0 then 10 else 11 end) as1
FROM ""IIFTest01Model"" a", sql);
sql = fsql.Select<IIFTest01Model>().ToSql(a => a.Bool ? 10 : 11);
Assert.Equal(@"SELECT (case when a.""Bool"" = 1 then 10 else 11 end) as1
FROM ""IIFTest01Model"" a", sql);
sql = fsql.Select<IIFTest01Model>().ToSql(a => a.BoolNullable == true ? 10 : 11);
Assert.Equal(@"SELECT (case when a.""BoolNullable"" = 1 then 10 else 11 end) as1
FROM ""IIFTest01Model"" a", sql);
sql = fsql.Select<IIFTest01Model>().ToSql(a => a.BoolNullable != true ? 10 : 11);
Assert.Equal(@"SELECT (case when a.""BoolNullable"" <> 1 then 10 else 11 end) as1
FROM ""IIFTest01Model"" a", sql);
sql = fsql.Select<IIFTest01Model>().ToSql(a => a.BoolNullable == false ? 10 : 11);
Assert.Equal(@"SELECT (case when a.""BoolNullable"" = 0 then 10 else 11 end) as1
FROM ""IIFTest01Model"" a", sql);
sql = fsql.Select<IIFTest01Model>().ToSql(a => !a.BoolNullable.Value ? 10 : 11);
Assert.Equal(@"SELECT (case when a.""BoolNullable"" = 0 then 10 else 11 end) as1
FROM ""IIFTest01Model"" a", sql);
sql = fsql.Select<IIFTest01Model>().ToSql(a => a.BoolNullable.Value ? 10 : 11);
Assert.Equal(@"SELECT (case when a.""BoolNullable"" = 1 then 10 else 11 end) as1
FROM ""IIFTest01Model"" a", sql);
sql = fsql.Select<IIFTest01Model>().ToSql(a => a.Bool == true && a.Id > 0 ? 10 : 11);
Assert.Equal(@"SELECT (case when a.""Bool"" = 1 AND a.""Id"" > 0 then 10 else 11 end) as1
FROM ""IIFTest01Model"" a", sql);
sql = fsql.Select<IIFTest01Model>().ToSql(a => a.Bool != true && a.Id > 0 ? 10 : 11);
Assert.Equal(@"SELECT (case when a.""Bool"" <> 1 AND a.""Id"" > 0 then 10 else 11 end) as1
FROM ""IIFTest01Model"" a", sql);
sql = fsql.Select<IIFTest01Model>().ToSql(a => a.Bool == false && a.Id > 0 ? 10 : 11);
Assert.Equal(@"SELECT (case when a.""Bool"" = 0 AND a.""Id"" > 0 then 10 else 11 end) as1
FROM ""IIFTest01Model"" a", sql);
sql = fsql.Select<IIFTest01Model>().ToSql(a => !a.Bool && a.Id > 0 ? 10 : 11);
Assert.Equal(@"SELECT (case when a.""Bool"" = 0 AND a.""Id"" > 0 then 10 else 11 end) as1
FROM ""IIFTest01Model"" a", sql);
sql = fsql.Select<IIFTest01Model>().ToSql(a => a.Bool && a.Id > 0 ? 10 : 11);
Assert.Equal(@"SELECT (case when a.""Bool"" = 1 AND a.""Id"" > 0 then 10 else 11 end) as1
FROM ""IIFTest01Model"" a", sql);
sql = fsql.Select<IIFTest01Model>().ToSql(a => a.BoolNullable == true && a.Id > 0 ? 10 : 11);
Assert.Equal(@"SELECT (case when a.""BoolNullable"" = 1 AND a.""Id"" > 0 then 10 else 11 end) as1
FROM ""IIFTest01Model"" a", sql);
sql = fsql.Select<IIFTest01Model>().ToSql(a => a.BoolNullable != true && a.Id > 0 ? 10 : 11);
Assert.Equal(@"SELECT (case when a.""BoolNullable"" <> 1 AND a.""Id"" > 0 then 10 else 11 end) as1
FROM ""IIFTest01Model"" a", sql);
sql = fsql.Select<IIFTest01Model>().ToSql(a => a.BoolNullable == false && a.Id > 0 ? 10 : 11);
Assert.Equal(@"SELECT (case when a.""BoolNullable"" = 0 AND a.""Id"" > 0 then 10 else 11 end) as1
FROM ""IIFTest01Model"" a", sql);
sql = fsql.Select<IIFTest01Model>().ToSql(a => !a.BoolNullable.Value && a.Id > 0 ? 10 : 11);
Assert.Equal(@"SELECT (case when a.""BoolNullable"" = 0 AND a.""Id"" > 0 then 10 else 11 end) as1
FROM ""IIFTest01Model"" a", sql);
sql = fsql.Select<IIFTest01Model>().ToSql(a => a.BoolNullable.Value && a.Id > 0 ? 10 : 11);
Assert.Equal(@"SELECT (case when a.""BoolNullable"" = 1 AND a.""Id"" > 0 then 10 else 11 end) as1
FROM ""IIFTest01Model"" a", sql);
sql = fsql.Select<IIFTest01Model>().ToSql(a => a.Bool == true && a.Id > 0 && a.Bool == true ? 10 : 11);
Assert.Equal(@"SELECT (case when a.""Bool"" = 1 AND a.""Id"" > 0 AND a.""Bool"" = 1 then 10 else 11 end) as1
FROM ""IIFTest01Model"" a", sql);
sql = fsql.Select<IIFTest01Model>().ToSql(a => a.Bool != true && a.Id > 0 && a.Bool != true ? 10 : 11);
Assert.Equal(@"SELECT (case when a.""Bool"" <> 1 AND a.""Id"" > 0 AND a.""Bool"" <> 1 then 10 else 11 end) as1
FROM ""IIFTest01Model"" a", sql);
sql = fsql.Select<IIFTest01Model>().ToSql(a => a.Bool == false && a.Id > 0 && a.Bool == false ? 10 : 11);
Assert.Equal(@"SELECT (case when a.""Bool"" = 0 AND a.""Id"" > 0 AND a.""Bool"" = 0 then 10 else 11 end) as1
FROM ""IIFTest01Model"" a", sql);
sql = fsql.Select<IIFTest01Model>().ToSql(a => !a.Bool && a.Id > 0 && !a.Bool ? 10 : 11);
Assert.Equal(@"SELECT (case when a.""Bool"" = 0 AND a.""Id"" > 0 AND a.""Bool"" = 0 then 10 else 11 end) as1
FROM ""IIFTest01Model"" a", sql);
sql = fsql.Select<IIFTest01Model>().ToSql(a => a.Bool && a.Id > 0 && a.Bool ? 10 : 11);
Assert.Equal(@"SELECT (case when a.""Bool"" = 1 AND a.""Id"" > 0 AND a.""Bool"" = 1 then 10 else 11 end) as1
FROM ""IIFTest01Model"" a", sql);
sql = fsql.Select<IIFTest01Model>().ToSql(a => a.BoolNullable == true && a.Id > 0 && a.BoolNullable == true ? 10 : 11);
Assert.Equal(@"SELECT (case when a.""BoolNullable"" = 1 AND a.""Id"" > 0 AND a.""BoolNullable"" = 1 then 10 else 11 end) as1
FROM ""IIFTest01Model"" a", sql);
sql = fsql.Select<IIFTest01Model>().ToSql(a => a.BoolNullable != true && a.Id > 0 && a.BoolNullable != true ? 10 : 11);
Assert.Equal(@"SELECT (case when a.""BoolNullable"" <> 1 AND a.""Id"" > 0 AND a.""BoolNullable"" <> 1 then 10 else 11 end) as1
FROM ""IIFTest01Model"" a", sql);
sql = fsql.Select<IIFTest01Model>().ToSql(a => a.BoolNullable == false && a.Id > 0 && a.BoolNullable == false ? 10 : 11);
Assert.Equal(@"SELECT (case when a.""BoolNullable"" = 0 AND a.""Id"" > 0 AND a.""BoolNullable"" = 0 then 10 else 11 end) as1
FROM ""IIFTest01Model"" a", sql);
sql = fsql.Select<IIFTest01Model>().ToSql(a => !a.BoolNullable.Value && a.Id > 0 && !a.BoolNullable.Value ? 10 : 11);
Assert.Equal(@"SELECT (case when a.""BoolNullable"" = 0 AND a.""Id"" > 0 AND a.""BoolNullable"" = 0 then 10 else 11 end) as1
FROM ""IIFTest01Model"" a", sql);
sql = fsql.Select<IIFTest01Model>().ToSql(a => a.BoolNullable.Value && a.Id > 0 && a.BoolNullable.Value ? 10 : 11);
Assert.Equal(@"SELECT (case when a.""BoolNullable"" = 1 AND a.""Id"" > 0 AND a.""BoolNullable"" = 1 then 10 else 11 end) as1
FROM ""IIFTest01Model"" a", sql);
}
class IIFTest01Model
{
public int Id { get; set; }
public bool Bool { get; set; }
public bool? BoolNullable { get; set; }
}
}
}

View File

@ -1,23 +1,10 @@
using FreeSql.DataAnnotations;
using FreeSql;
using System;
using System.Collections.Generic;
using Xunit;
using System.Linq;
using Newtonsoft.Json.Linq;
using NpgsqlTypes;
using Npgsql.LegacyPostgis;
using System.Linq.Expressions;
using System.Threading.Tasks;
using System.ComponentModel.DataAnnotations;
using System.Threading;
using System.Data.SqlClient;
using kwlib;
using System.Diagnostics;
using System.IO;
using System.Text;
using FreeSql;
using FreeSql.Internal;
using FreeSql.Internal.CommonProvider;
using System;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using Xunit;
namespace FreeSql.InternalTests
{

View File

@ -1,21 +1,4 @@
using FreeSql.DataAnnotations;
using FreeSql;
using System;
using System.Collections.Generic;
using Xunit;
using System.Linq;
using Newtonsoft.Json.Linq;
using NpgsqlTypes;
using Npgsql.LegacyPostgis;
using System.Linq.Expressions;
using System.Threading.Tasks;
using System.ComponentModel.DataAnnotations;
using System.Threading;
using System.Data.SqlClient;
using kwlib;
using System.Diagnostics;
using System.IO;
using System.Text;
using Xunit;
namespace FreeSql.Tests.Issues
{

View File

@ -1,22 +1,8 @@
using FreeSql.DataAnnotations;
using FreeSql;
using System;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Collections.Generic;
using Xunit;
using System.Linq;
using Newtonsoft.Json.Linq;
using NpgsqlTypes;
using Npgsql.LegacyPostgis;
using System.Linq.Expressions;
using System.Threading.Tasks;
using System.ComponentModel.DataAnnotations;
using System.Threading;
using System.Data.SqlClient;
using kwlib;
using System.Diagnostics;
using System.IO;
using System.Text;
using Newtonsoft.Json;
namespace FreeSql.Tests.Issues
{

View File

@ -1,21 +1,7 @@
using FreeSql.DataAnnotations;
using FreeSql;
using System;
using System.Collections.Generic;
using Xunit;
using System.Linq;
using Newtonsoft.Json.Linq;
using NpgsqlTypes;
using Npgsql.LegacyPostgis;
using System.Linq.Expressions;
using System.Threading.Tasks;
using System.ComponentModel.DataAnnotations;
using System.Threading;
using System.Data.SqlClient;
using kwlib;
using System.Diagnostics;
using System.IO;
using System.Text;
using Xunit;
namespace FreeSql.Tests.Issues
{

View File

@ -1,4 +1,4 @@
using FreeSql.DataAnnotations;
using FreeSql.DataAnnotations;
using System;
using System.Collections.Generic;
using System.Linq;
@ -830,9 +830,8 @@ limit 10", t1);
all = a,
count = (long)select.As("b").Sum(b => b.Id)
});
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT sum(b.""ID"")
FROM ""TB_TOPIC22"" b
limit 1) as6
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, coalesce((SELECT sum(b.""ID"")
FROM ""TB_TOPIC22"" b), 0) as6
FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new
{
@ -848,9 +847,8 @@ FROM ""TB_TOPIC22"" a", subquery);
all = a,
count = select.As("b").Min(b => b.Id)
});
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT min(b.""ID"")
FROM ""TB_TOPIC22"" b
limit 1) as6
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, coalesce((SELECT min(b.""ID"")
FROM ""TB_TOPIC22"" b), 0) as6
FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new
{
@ -866,9 +864,8 @@ FROM ""TB_TOPIC22"" a", subquery);
all = a,
count = select.As("b").Max(b => b.Id)
});
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT max(b.""ID"")
FROM ""TB_TOPIC22"" b
limit 1) as6
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, coalesce((SELECT max(b.""ID"")
FROM ""TB_TOPIC22"" b), 0) as6
FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new
{
@ -884,9 +881,8 @@ FROM ""TB_TOPIC22"" a", subquery);
all = a,
count = select.As("b").Avg(b => b.Id)
});
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT avg(b.""ID"")
FROM ""TB_TOPIC22"" b
limit 1) as6
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, coalesce((SELECT avg(b.""ID"")
FROM ""TB_TOPIC22"" b), 0) as6
FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new
{

View File

@ -1,22 +1,5 @@
using FreeSql.DataAnnotations;
using FreeSql;
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using Xunit;
using System.Linq;
using Newtonsoft.Json.Linq;
using NpgsqlTypes;
using Npgsql.LegacyPostgis;
using System.Linq.Expressions;
using System.Threading.Tasks;
using System.ComponentModel.DataAnnotations;
using System.Threading;
using System.Data.SqlClient;
using kwlib;
using System.Diagnostics;
using System.IO;
using System.Text;
using FreeSql.Extensions.Linq;
namespace FreeSql.Tests.Linq
{

View File

@ -1,21 +1,7 @@
using FreeSql.DataAnnotations;
using FreeSql;
using System;
using System.Collections.Generic;
using Xunit;
using System.Linq;
using Newtonsoft.Json.Linq;
using NpgsqlTypes;
using Npgsql.LegacyPostgis;
using System.Linq.Expressions;
using System.Threading.Tasks;
using System.ComponentModel.DataAnnotations;
using System.Threading;
using System.Data.SqlClient;
using kwlib;
using System.Diagnostics;
using System.IO;
using System.Text;
using Xunit;
namespace FreeSql.Tests.Linq
{

View File

@ -1,21 +1,9 @@
using FreeSql.DataAnnotations;
using FreeSql;
using FreeSql;
using FreeSql.DataAnnotations;
using System;
using System.Collections.Generic;
using Xunit;
using System.Linq;
using Newtonsoft.Json.Linq;
using NpgsqlTypes;
using Npgsql.LegacyPostgis;
using System.Linq.Expressions;
using System.Threading.Tasks;
using System.ComponentModel.DataAnnotations;
using System.Threading;
using System.Data.SqlClient;
using kwlib;
using System.Diagnostics;
using System.IO;
using System.Text;
using Xunit;
namespace FreeSql.Tests.Linq
{

View File

@ -945,8 +945,9 @@ WHERE (((a.[Name]) in (SELECT s.[Title] as as1
all = a,
count = (long)select.As("b").Sum(b => b.Id)
});
Assert.Equal(@"SELECT a.[Id] as as1, a.[Clicks] as as2, a.[TypeGuid] as as3, a.[Title] as as4, a.[CreateTime] as as5, (SELECT sum(b.[Id])
FROM [tb_topic22] b) as as6
Assert.Equal(@"SELECT a.[Id] as as1, a.[Clicks] as as2, a.[TypeGuid] as as3, a.[Title] as as4, a.[CreateTime] as as5, iif(isnull((SELECT sum(b.[Id])
FROM [tb_topic22] b)), 0, (SELECT sum(b.[Id])
FROM [tb_topic22] b)) as as6
FROM [tb_topic22] a", subquery);
var subqueryList = select.ToList(a => new
{
@ -962,8 +963,9 @@ FROM [tb_topic22] a", subquery);
all = a,
count = select.As("b").Min(b => b.Id)
});
Assert.Equal(@"SELECT a.[Id] as as1, a.[Clicks] as as2, a.[TypeGuid] as as3, a.[Title] as as4, a.[CreateTime] as as5, (SELECT min(b.[Id])
FROM [tb_topic22] b) as as6
Assert.Equal(@"SELECT a.[Id] as as1, a.[Clicks] as as2, a.[TypeGuid] as as3, a.[Title] as as4, a.[CreateTime] as as5, iif(isnull((SELECT min(b.[Id])
FROM [tb_topic22] b)), 0, (SELECT min(b.[Id])
FROM [tb_topic22] b)) as as6
FROM [tb_topic22] a", subquery);
var subqueryList = select.ToList(a => new
{
@ -979,8 +981,9 @@ FROM [tb_topic22] a", subquery);
all = a,
count = select.As("b").Max(b => b.Id)
});
Assert.Equal(@"SELECT a.[Id] as as1, a.[Clicks] as as2, a.[TypeGuid] as as3, a.[Title] as as4, a.[CreateTime] as as5, (SELECT max(b.[Id])
FROM [tb_topic22] b) as as6
Assert.Equal(@"SELECT a.[Id] as as1, a.[Clicks] as as2, a.[TypeGuid] as as3, a.[Title] as as4, a.[CreateTime] as as5, iif(isnull((SELECT max(b.[Id])
FROM [tb_topic22] b)), 0, (SELECT max(b.[Id])
FROM [tb_topic22] b)) as as6
FROM [tb_topic22] a", subquery);
var subqueryList = select.ToList(a => new
{
@ -996,8 +999,9 @@ FROM [tb_topic22] a", subquery);
all = a,
count = select.As("b").Avg(b => b.Id)
});
Assert.Equal(@"SELECT a.[Id] as as1, a.[Clicks] as as2, a.[TypeGuid] as as3, a.[Title] as as4, a.[CreateTime] as as5, (SELECT avg(b.[Id])
FROM [tb_topic22] b) as as6
Assert.Equal(@"SELECT a.[Id] as as1, a.[Clicks] as as2, a.[TypeGuid] as as3, a.[Title] as as4, a.[CreateTime] as as5, iif(isnull((SELECT avg(b.[Id])
FROM [tb_topic22] b)), 0, (SELECT avg(b.[Id])
FROM [tb_topic22] b)) as as6
FROM [tb_topic22] a", subquery);
var subqueryList = select.ToList(a => new
{

View File

@ -1,4 +1,4 @@
using FreeSql.DataAnnotations;
using FreeSql.DataAnnotations;
using System;
using System.Collections.Generic;
using System.Linq;
@ -66,7 +66,7 @@ namespace FreeSql.Tests.MsAccessExpression
[Fact]
public void Format()
{
var item = g.msaccess.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><EFBFBD><EFBFBD>101", CreateTime = DateTime.Parse("2020-7-5") });
var item = g.msaccess.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
var sql = select.WhereDynamic(item).ToSql(a => new
{
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}",
@ -89,9 +89,9 @@ WHERE (a.[Id] = {item.Id})", sql);
[Fact]
public void Format4()
{
//3<EFBFBD><EFBFBD> {} ʱ<EFBFBD><EFBFBD>Arguments <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿֿ<EFBFBD><EFBFBD><EFBFBD>
//4<EFBFBD><EFBFBD> {} ʱ<EFBFBD><EFBFBD>Arguments[1] ֻ<EFBFBD>ܽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> NewArray []
var item = g.msaccess.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><EFBFBD><EFBFBD>101", CreateTime = DateTime.Parse("2020-7-5") });
//3 {} 时,Arguments 解析出来是分开的
//4 {} 时,Arguments[1] 只能解析这个出来,然后里面是 NewArray []
var item = g.msaccess.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
var sql = select.WhereDynamic(item).ToSql(a => new
{
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}{a.Title}",
@ -249,6 +249,17 @@ WHERE (a.[Id] = {item.Id})", sql);
//SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a__Type.`Guid` as4, a__Type.`ParentId` as5, a__Type.`Name` as6, a.`Title` as7, a.`CreateTime` as8
//FROM `tb_topic` a, `TestTypeInfo` a__Type
//WHERE((concat(a.`Title`, 'aaa')) LIKE concat('%', a__Type.`Name`, '%'))
var guid = Guid.NewGuid().ToString("N");
var fsql = g.msaccess;
fsql.Insert(new Topic
{
Title = $"Test{guid}Contains01"
}).ExecuteAffrows();
var ret = fsql.Select<Topic>().Where(a => a.Title.Contains(guid)).ToList();
Assert.NotEmpty(ret);
Assert.Equal($"Test{guid}Contains01", ret[0].Title);
}
[Fact]
public void ToLower()
@ -683,7 +694,7 @@ WHERE (a.[Id] = {item.Id})", sql);
[Fact]
public void Replace()
{
//System.Data.OleDb.OleDbException : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD> 'replace' <EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD>
//System.Data.OleDb.OleDbException : 表达式中 'replace' 函数未定义。
//var data = new List<object>();
//data.Add(select.Where(a => a.Title.Replace("a", "b") == "aaa").ToList());
//data.Add(select.Where(a => a.Title.Replace("a", "b").Replace("b", "c") == a.Title).ToList());

View File

@ -1133,8 +1133,8 @@ limit 0,10", t1);
all = a,
count = (long)select.As("b").Sum(b => b.Id)
});
Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, (SELECT sum(b.`Id`)
FROM `tb_topic` b) as6
Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, ifnull((SELECT sum(b.`Id`)
FROM `tb_topic` b), 0) as6
FROM `tb_topic` a", subquery);
var subqueryList = select.ToList(a => new
{
@ -1150,8 +1150,8 @@ FROM `tb_topic` a", subquery);
all = a,
count = select.As("b").Min(b => b.Id)
});
Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, (SELECT min(b.`Id`)
FROM `tb_topic` b) as6
Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, ifnull((SELECT min(b.`Id`)
FROM `tb_topic` b), 0) as6
FROM `tb_topic` a", subquery);
var subqueryList = select.ToList(a => new
{
@ -1167,8 +1167,8 @@ FROM `tb_topic` a", subquery);
all = a,
count = select.As("b").Max(b => b.Id)
});
Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, (SELECT max(b.`Id`)
FROM `tb_topic` b) as6
Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, ifnull((SELECT max(b.`Id`)
FROM `tb_topic` b), 0) as6
FROM `tb_topic` a", subquery);
var subqueryList = select.ToList(a => new
{
@ -1184,8 +1184,8 @@ FROM `tb_topic` a", subquery);
all = a,
count = select.As("b").Avg(b => b.Id)
});
Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, (SELECT avg(b.`Id`)
FROM `tb_topic` b) as6
Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, ifnull((SELECT avg(b.`Id`)
FROM `tb_topic` b), 0) as6
FROM `tb_topic` a", subquery);
var subqueryList = select.ToList(a => new
{

View File

@ -942,7 +942,7 @@ WHERE (((a.""NAME"") in (SELECT s.""TITLE"" as1
public void OrderByRandom()
{
var t1 = select.OrderByRandom().Limit(10).ToSql("1");
Assert.Equal(@"SELECT t.* FROM (SELECT 1
Assert.Equal(@"SELECT t.* FROM (SELECT 1
FROM ""TB_TOPIC22"" a
ORDER BY dbms_random.value) t WHERE ROWNUM < 11", t1);
var t2 = select.OrderByRandom().Limit(10).ToList();
@ -984,8 +984,8 @@ ORDER BY dbms_random.value) t WHERE ROWNUM < 11", t1);
all = a,
count = (long)select.As("b").Sum(b => b.Id)
});
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT sum(b.""ID"")
FROM ""TB_TOPIC22"" b) as6
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, nvl((SELECT sum(b.""ID"")
FROM ""TB_TOPIC22"" b), 0) as6
FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new
{
@ -1001,8 +1001,8 @@ FROM ""TB_TOPIC22"" a", subquery);
all = a,
count = select.As("b").Min(b => b.Id)
});
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT min(b.""ID"")
FROM ""TB_TOPIC22"" b) as6
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, nvl((SELECT min(b.""ID"")
FROM ""TB_TOPIC22"" b), 0) as6
FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new
{
@ -1018,8 +1018,8 @@ FROM ""TB_TOPIC22"" a", subquery);
all = a,
count = select.As("b").Max(b => b.Id)
});
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT max(b.""ID"")
FROM ""TB_TOPIC22"" b) as6
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, nvl((SELECT max(b.""ID"")
FROM ""TB_TOPIC22"" b), 0) as6
FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new
{
@ -1035,8 +1035,8 @@ FROM ""TB_TOPIC22"" a", subquery);
all = a,
count = select.As("b").Avg(b => b.Id)
});
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT avg(b.""ID"")
FROM ""TB_TOPIC22"" b) as6
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, nvl((SELECT avg(b.""ID"")
FROM ""TB_TOPIC22"" b), 0) as6
FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.Limit(10).ToList(a => new
{
@ -1138,12 +1138,12 @@ WHERE (((to_char(a.""ID"")) in (SELECT b.""TITLE""
query = select.AsTable((_, old) => old).AsTable((_, old) => old);
sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT * from (SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a) ftb UNION ALL SELECT * from (SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a) ftb", sql);
Assert.Equal("SELECT * from (SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a) ftb UNION ALL SELECT * from (SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a) ftb", sql);
query.ToList();
query = select.AsTable((_, old) => old).AsTable((_, old) => old);
sql = query.ToSql("count(1) as1").Replace("\r\n", "");
Assert.Equal("SELECT * from (SELECT count(1) as1 FROM \"TB_TOPIC22\" a) ftb UNION ALL SELECT * from (SELECT count(1) as1 FROM \"TB_TOPIC22\" a) ftb", sql);
Assert.Equal("SELECT * from (SELECT count(1) as1 FROM \"TB_TOPIC22\" a) ftb UNION ALL SELECT * from (SELECT count(1) as1 FROM \"TB_TOPIC22\" a) ftb", sql);
query.Count();
select.AsTable((_, old) => old).AsTable((_, old) => old).Max(a => a.Id);

View File

@ -1074,8 +1074,8 @@ limit 10", t1);
all = a,
count = (long)select.As("b").Sum(b => b.Id)
});
Assert.Equal(@"SELECT a.""id"" as1, a.""clicks"" as2, a.""typeguid"" as3, a.""title"" as4, a.""createtime"" as5, (SELECT sum(b.""id"")
FROM ""tb_topic"" b) as6
Assert.Equal(@"SELECT a.""id"" as1, a.""clicks"" as2, a.""typeguid"" as3, a.""title"" as4, a.""createtime"" as5, coalesce((SELECT sum(b.""id"")
FROM ""tb_topic"" b), 0) as6
FROM ""tb_topic"" a", subquery);
var subqueryList = select.ToList(a => new
{
@ -1091,8 +1091,8 @@ FROM ""tb_topic"" a", subquery);
all = a,
count = select.As("b").Min(b => b.Id)
});
Assert.Equal(@"SELECT a.""id"" as1, a.""clicks"" as2, a.""typeguid"" as3, a.""title"" as4, a.""createtime"" as5, (SELECT min(b.""id"")
FROM ""tb_topic"" b) as6
Assert.Equal(@"SELECT a.""id"" as1, a.""clicks"" as2, a.""typeguid"" as3, a.""title"" as4, a.""createtime"" as5, coalesce((SELECT min(b.""id"")
FROM ""tb_topic"" b), 0) as6
FROM ""tb_topic"" a", subquery);
var subqueryList = select.ToList(a => new
{
@ -1108,8 +1108,8 @@ FROM ""tb_topic"" a", subquery);
all = a,
count = select.As("b").Max(b => b.Id)
});
Assert.Equal(@"SELECT a.""id"" as1, a.""clicks"" as2, a.""typeguid"" as3, a.""title"" as4, a.""createtime"" as5, (SELECT max(b.""id"")
FROM ""tb_topic"" b) as6
Assert.Equal(@"SELECT a.""id"" as1, a.""clicks"" as2, a.""typeguid"" as3, a.""title"" as4, a.""createtime"" as5, coalesce((SELECT max(b.""id"")
FROM ""tb_topic"" b), 0) as6
FROM ""tb_topic"" a", subquery);
var subqueryList = select.ToList(a => new
{
@ -1125,8 +1125,8 @@ FROM ""tb_topic"" a", subquery);
all = a,
count = select.As("b").Avg(b => b.Id)
});
Assert.Equal(@"SELECT a.""id"" as1, a.""clicks"" as2, a.""typeguid"" as3, a.""title"" as4, a.""createtime"" as5, (SELECT avg(b.""id"")
FROM ""tb_topic"" b) as6
Assert.Equal(@"SELECT a.""id"" as1, a.""clicks"" as2, a.""typeguid"" as3, a.""title"" as4, a.""createtime"" as5, coalesce((SELECT avg(b.""id"")
FROM ""tb_topic"" b), 0) as6
FROM ""tb_topic"" a", subquery);
var subqueryList = select.ToList(a => new
{

View File

@ -1,5 +1,4 @@
using FreeSql.DataAnnotations;
using Newtonsoft.Json;
using FreeSql.DataAnnotations;
using Newtonsoft.Json.Linq;
using Npgsql;
using Npgsql.LegacyPostgis;
@ -11,6 +10,7 @@ using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Net;
using System.Net.NetworkInformation;
using System.Numerics;
using System.Text;
using Xunit;
@ -18,12 +18,13 @@ namespace FreeSql.Tests.PostgreSQL
{
public class PostgreSQLCodeFirstTest
{
[Fact]
public void InsertUpdateParameter()
{
var fsql = g.pgsql;
fsql.CodeFirst.SyncStructure<ts_iupstr_bak>();
var item = new ts_iupstr { id = Guid.NewGuid(), title = string.Join(",", Enumerable.Range(0, 2000).Select(a => "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><EFBFBD><EFBFBD>")) };
var item = new ts_iupstr { id = Guid.NewGuid(), title = string.Join(",", Enumerable.Range(0, 2000).Select(a => "我是中国人")) };
Assert.Equal(1, fsql.Insert(item).ExecuteAffrows());
var find = fsql.Select<ts_iupstr>().Where(a => a.id == item.id).First();
Assert.NotNull(find);
@ -91,7 +92,7 @@ namespace FreeSql.Tests.PostgreSQL
[Fact]
public void Blob()
{
var str1 = string.Join(",", Enumerable.Range(0, 10000).Select(a => "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><EFBFBD><EFBFBD>"));
var str1 = string.Join(",", Enumerable.Range(0, 10000).Select(a => "我是中国人"));
var data1 = Encoding.UTF8.GetBytes(str1);
var item1 = new TS_BLB01 { Data = data1 };
@ -137,57 +138,57 @@ namespace FreeSql.Tests.PostgreSQL
}
[Fact]
public void <EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>_<EFBFBD>ֶ<EFBFBD>()
public void _字段()
{
var sql = g.pgsql.CodeFirst.GetComparisonDDLStatements<<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>>();
g.pgsql.CodeFirst.SyncStructure<<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>>();
var sql = g.pgsql.CodeFirst.GetComparisonDDLStatements<>();
g.pgsql.CodeFirst.SyncStructure<>();
var item = new <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>
var item = new
{
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> = "<EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD>",
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD> = DateTime.Now
= "测试标题",
= DateTime.Now
};
Assert.Equal(1, g.pgsql.Insert<<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>>().AppendData(item).ExecuteAffrows());
Assert.NotEqual(Guid.Empty, item.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>);
var item2 = g.pgsql.Select<<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>>().Where(a => a.<EFBFBD><EFBFBD><EFBFBD><EFBFBD> == item.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>).First();
Assert.Equal(1, g.pgsql.Insert<>().AppendData(item).ExecuteAffrows());
Assert.NotEqual(Guid.Empty, item.);
var item2 = g.pgsql.Select<>().Where(a => a. == item.).First();
Assert.NotNull(item2);
Assert.Equal(item.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, item2.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>);
Assert.Equal(item.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, item2.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>);
Assert.Equal(item., item2.);
Assert.Equal(item., item2.);
item.<EFBFBD><EFBFBD><EFBFBD><EFBFBD> = "<EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
Assert.Equal(1, g.pgsql.Update<<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>>().SetSource(item).ExecuteAffrows());
item2 = g.pgsql.Select<<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>>().Where(a => a.<EFBFBD><EFBFBD><EFBFBD><EFBFBD> == item.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>).First();
item. = "测试标题更新";
Assert.Equal(1, g.pgsql.Update<>().SetSource(item).ExecuteAffrows());
item2 = g.pgsql.Select<>().Where(a => a. == item.).First();
Assert.NotNull(item2);
Assert.Equal(item.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, item2.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>);
Assert.Equal(item.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, item2.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>);
Assert.Equal(item., item2.);
Assert.Equal(item., item2.);
item.<EFBFBD><EFBFBD><EFBFBD><EFBFBD> = "<EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>_repo";
var repo = g.pgsql.GetRepository<<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>>();
item. = "测试标题更新_repo";
var repo = g.pgsql.GetRepository<>();
Assert.Equal(1, repo.Update(item));
item2 = g.pgsql.Select<<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>>().Where(a => a.<EFBFBD><EFBFBD><EFBFBD><EFBFBD> == item.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>).First();
item2 = g.pgsql.Select<>().Where(a => a. == item.).First();
Assert.NotNull(item2);
Assert.Equal(item.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, item2.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>);
Assert.Equal(item.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, item2.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>);
Assert.Equal(item., item2.);
Assert.Equal(item., item2.);
item.<EFBFBD><EFBFBD><EFBFBD><EFBFBD> = "<EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>_repo22";
item. = "测试标题更新_repo22";
Assert.Equal(1, repo.Update(item));
item2 = g.pgsql.Select<<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>>().Where(a => a.<EFBFBD><EFBFBD><EFBFBD><EFBFBD> == item.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>).First();
item2 = g.pgsql.Select<>().Where(a => a. == item.).First();
Assert.NotNull(item2);
Assert.Equal(item.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, item2.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>);
Assert.Equal(item.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, item2.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>);
Assert.Equal(item., item2.);
Assert.Equal(item., item2.);
}
class <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>
class
{
[Column(IsPrimary = true)]
public Guid <EFBFBD><EFBFBD><EFBFBD><EFBFBD> { get; set; }
public Guid { get; set; }
public string <EFBFBD><EFBFBD><EFBFBD><EFBFBD> { get; set; }
public string { get; set; }
[Column(ServerTime = DateTimeKind.Local, CanUpdate = false)]
public DateTime <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD> { get; set; }
public DateTime { get; set; }
[Column(ServerTime = DateTimeKind.Local)]
public DateTime <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD> { get; set; }
public DateTime { get; set; }
}
[Fact]
@ -215,7 +216,7 @@ namespace FreeSql.Tests.PostgreSQL
public void AddField()
{
var sql = g.pgsql.CodeFirst.GetComparisonDDLStatements<TopicAddField>();
Assert.True(string.IsNullOrEmpty(sql)); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD>
Assert.True(string.IsNullOrEmpty(sql)); //测试运行两次后
g.pgsql.Select<TopicAddField>();
var id = g.pgsql.Insert<TopicAddField>().AppendData(new TopicAddField { }).ExecuteIdentity();
}
@ -259,8 +260,6 @@ namespace FreeSql.Tests.PostgreSQL
[Fact]
public void CurdAllField()
{
NpgsqlConnection.GlobalTypeMapper.UseLegacyPostgis();
var sql1 = select.Where(a => a.testFieldIntArray.Contains(1)).ToSql();
var sql2 = select.Where(a => a.testFieldIntArray.Contains(1)).ToSql();
@ -271,8 +270,8 @@ namespace FreeSql.Tests.PostgreSQL
var item2 = new TableAllType
{
testFieldBitArray = new BitArray(Encoding.UTF8.GetBytes("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>")),
testFieldBitArrayArray = new[] { new BitArray(Encoding.UTF8.GetBytes("<EFBFBD>й<EFBFBD>")), new BitArray(Encoding.UTF8.GetBytes("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>")) },
testFieldBitArray = new BitArray(Encoding.UTF8.GetBytes("我是")),
testFieldBitArrayArray = new[] { new BitArray(Encoding.UTF8.GetBytes("中国")), new BitArray(Encoding.UTF8.GetBytes("公民")) },
testFieldBool = true,
testFieldBoolArray = new[] { true, true, false, false },
testFieldBoolArrayNullable = new bool?[] { true, true, null, false, false },
@ -281,8 +280,8 @@ namespace FreeSql.Tests.PostgreSQL
testFieldByteArray = new byte[] { 0, 1, 2, 3, 4, 5, 6 },
testFieldByteArrayNullable = new byte?[] { 0, 1, 2, 3, null, 4, 5, 6 },
testFieldByteNullable = byte.MinValue,
testFieldBytes = Encoding.UTF8.GetBytes("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><EFBFBD><EFBFBD>"),
testFieldBytesArray = new[] { Encoding.UTF8.GetBytes("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><EFBFBD><EFBFBD>"), Encoding.UTF8.GetBytes("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><EFBFBD><EFBFBD>") },
testFieldBytes = Encoding.UTF8.GetBytes("我是中国人"),
testFieldBytesArray = new[] { Encoding.UTF8.GetBytes("我是中国人"), Encoding.UTF8.GetBytes("我是中国人") },
testFieldCidr = (IPAddress.Parse("10.0.0.0"), 8),
testFieldCidrArray = new[] { (IPAddress.Parse("10.0.0.0"), 8), (IPAddress.Parse("192.168.0.0"), 16) },
testFieldCidrArrayNullable = new (IPAddress, int)?[] { (IPAddress.Parse("10.0.0.0"), 8), null, (IPAddress.Parse("192.168.0.0"), 16) },
@ -457,9 +456,9 @@ namespace FreeSql.Tests.PostgreSQL
testFieldShortArray = new short[] { 1, 2, 3, 4, 5 },
testFieldShortArrayNullable = new short?[] { 1, 2, 3, null, 4, 5 },
testFieldShortNullable = short.MinValue,
testFieldString = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><EFBFBD><EFBFBD>string'\\?!@#$%^&*()_+{}}{~?><<>",
testFieldString = "我是中国人string'\\?!@#$%^&*()_+{}}{~?><<>",
testFieldChar = 'X',
testFieldStringArray = new[] { "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><EFBFBD><EFBFBD>String1", "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><EFBFBD><EFBFBD>String2", null, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><EFBFBD><EFBFBD>String3" },
testFieldStringArray = new[] { "我是中国人String1", "我是中国人String2", null, "我是中国人String3" },
testFieldTimeSpan = TimeSpan.FromDays(1),
testFieldTimeSpanArray = new[] { TimeSpan.FromDays(1), TimeSpan.FromSeconds(10), TimeSpan.FromSeconds(60) },
testFieldTimeSpanArrayNullable = new TimeSpan?[] { TimeSpan.FromDays(1), TimeSpan.FromSeconds(10), null, TimeSpan.FromSeconds(60) },

View File

@ -1,12 +1,10 @@
using FreeSql.DataAnnotations;
using FreeSql.DataAnnotations;
using Newtonsoft.Json.Linq;
using Npgsql;
using Npgsql.LegacyPostgis;
using NpgsqlTypes;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Net;
using System.Net.NetworkInformation;
@ -19,11 +17,6 @@ namespace FreeSql.Tests.PostgreSQLExpression
ISelect<TableAllType> select => g.pgsql.Select<TableAllType>();
public OtherTest()
{
NpgsqlConnection.GlobalTypeMapper.UseLegacyPostgis();
}
[Fact]
public void Div()
{

View File

@ -1,4 +1,4 @@
using FreeSql.DataAnnotations;
using FreeSql.DataAnnotations;
using System;
using System.Collections.Generic;
using System.Linq;
@ -944,8 +944,8 @@ limit 10", t1);
all = a,
count = (long)select.As("b").Sum(b => b.Id)
});
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT sum(b.""ID"")
FROM ""TB_TOPIC"" b) as6
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, coalesce((SELECT sum(b.""ID"")
FROM ""TB_TOPIC"" b), 0) as6
FROM ""TB_TOPIC"" a", subquery);
var subqueryList = select.ToList(a => new
{
@ -961,8 +961,8 @@ FROM ""TB_TOPIC"" a", subquery);
all = a,
count = select.As("b").Min(b => b.Id)
});
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT min(b.""ID"")
FROM ""TB_TOPIC"" b) as6
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, coalesce((SELECT min(b.""ID"")
FROM ""TB_TOPIC"" b), 0) as6
FROM ""TB_TOPIC"" a", subquery);
var subqueryList = select.ToList(a => new
{
@ -978,8 +978,8 @@ FROM ""TB_TOPIC"" a", subquery);
all = a,
count = select.As("b").Max(b => b.Id)
});
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT max(b.""ID"")
FROM ""TB_TOPIC"" b) as6
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, coalesce((SELECT max(b.""ID"")
FROM ""TB_TOPIC"" b), 0) as6
FROM ""TB_TOPIC"" a", subquery);
var subqueryList = select.ToList(a => new
{
@ -995,8 +995,8 @@ FROM ""TB_TOPIC"" a", subquery);
all = a,
count = select.As("b").Avg(b => b.Id)
});
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT avg(b.""ID"")
FROM ""TB_TOPIC"" b) as6
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, coalesce((SELECT avg(b.""ID"")
FROM ""TB_TOPIC"" b), 0) as6
FROM ""TB_TOPIC"" a", subquery);
var subqueryList = select.ToList(a => new
{

View File

@ -981,8 +981,8 @@ ORDER BY newid()", t1);
all = a,
count = (long)select.As("b").Sum(b => b.Id)
});
Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, (SELECT sum(b.[Id])
FROM [tb_topic22] b) as6
Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, isnull((SELECT sum(b.[Id])
FROM [tb_topic22] b), 0) as6
FROM [tb_topic22] a", subquery);
var subqueryList = select.ToList(a => new
{
@ -998,8 +998,8 @@ FROM [tb_topic22] a", subquery);
all = a,
count = select.As("b").Min(b => b.Id)
});
Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, (SELECT min(b.[Id])
FROM [tb_topic22] b) as6
Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, isnull((SELECT min(b.[Id])
FROM [tb_topic22] b), 0) as6
FROM [tb_topic22] a", subquery);
var subqueryList = select.ToList(a => new
{
@ -1015,8 +1015,8 @@ FROM [tb_topic22] a", subquery);
all = a,
count = select.As("b").Max(b => b.Id)
});
Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, (SELECT max(b.[Id])
FROM [tb_topic22] b) as6
Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, isnull((SELECT max(b.[Id])
FROM [tb_topic22] b), 0) as6
FROM [tb_topic22] a", subquery);
var subqueryList = select.ToList(a => new
{
@ -1032,8 +1032,8 @@ FROM [tb_topic22] a", subquery);
all = a,
count = select.As("b").Avg(b => b.Id)
});
Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, (SELECT avg(b.[Id])
FROM [tb_topic22] b) as6
Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, isnull((SELECT avg(b.[Id])
FROM [tb_topic22] b), 0) as6
FROM [tb_topic22] a", subquery);
var subqueryList = select.ToList(a => new
{

View File

@ -1,4 +1,4 @@
using FreeSql.DataAnnotations;
using FreeSql.DataAnnotations;
using FreeSql.Tests.DataContext.SqlServer;
using System;
using System.Collections.Generic;

View File

@ -1003,8 +1003,8 @@ limit 0,10", t1);
all = a,
count = (long)select.As("b").Sum(b => b.Id)
});
Assert.Equal(@"SELECT a.""Id"" as1, a.""Clicks"" as2, a.""TypeGuid"" as3, a.""Title"" as4, a.""CreateTime"" as5, (SELECT sum(b.""Id"")
FROM ""tb_topic22"" b) as6
Assert.Equal(@"SELECT a.""Id"" as1, a.""Clicks"" as2, a.""TypeGuid"" as3, a.""Title"" as4, a.""CreateTime"" as5, ifnull((SELECT sum(b.""Id"")
FROM ""tb_topic22"" b), 0) as6
FROM ""tb_topic22"" a", subquery);
var subqueryList = select.ToList(a => new
{
@ -1020,8 +1020,8 @@ FROM ""tb_topic22"" a", subquery);
all = a,
count = select.As("b").Min(b => b.Id)
});
Assert.Equal(@"SELECT a.""Id"" as1, a.""Clicks"" as2, a.""TypeGuid"" as3, a.""Title"" as4, a.""CreateTime"" as5, (SELECT min(b.""Id"")
FROM ""tb_topic22"" b) as6
Assert.Equal(@"SELECT a.""Id"" as1, a.""Clicks"" as2, a.""TypeGuid"" as3, a.""Title"" as4, a.""CreateTime"" as5, ifnull((SELECT min(b.""Id"")
FROM ""tb_topic22"" b), 0) as6
FROM ""tb_topic22"" a", subquery);
var subqueryList = select.ToList(a => new
{
@ -1037,8 +1037,8 @@ FROM ""tb_topic22"" a", subquery);
all = a,
count = select.As("b").Max(b => b.Id)
});
Assert.Equal(@"SELECT a.""Id"" as1, a.""Clicks"" as2, a.""TypeGuid"" as3, a.""Title"" as4, a.""CreateTime"" as5, (SELECT max(b.""Id"")
FROM ""tb_topic22"" b) as6
Assert.Equal(@"SELECT a.""Id"" as1, a.""Clicks"" as2, a.""TypeGuid"" as3, a.""Title"" as4, a.""CreateTime"" as5, ifnull((SELECT max(b.""Id"")
FROM ""tb_topic22"" b), 0) as6
FROM ""tb_topic22"" a", subquery);
var subqueryList = select.ToList(a => new
{
@ -1054,8 +1054,8 @@ FROM ""tb_topic22"" a", subquery);
all = a,
count = select.As("b").Avg(b => b.Id)
});
Assert.Equal(@"SELECT a.""Id"" as1, a.""Clicks"" as2, a.""TypeGuid"" as3, a.""Title"" as4, a.""CreateTime"" as5, (SELECT avg(b.""Id"")
FROM ""tb_topic22"" b) as6
Assert.Equal(@"SELECT a.""Id"" as1, a.""Clicks"" as2, a.""TypeGuid"" as3, a.""Title"" as4, a.""CreateTime"" as5, ifnull((SELECT avg(b.""Id"")
FROM ""tb_topic22"" b), 0) as6
FROM ""tb_topic22"" a", subquery);
var subqueryList = select.ToList(a => new
{

View File

@ -1,4 +1,4 @@
using FreeSql.DataAnnotations;
using FreeSql.DataAnnotations;
using System;
using System.Collections.Generic;
using System.Linq;
@ -79,6 +79,7 @@ namespace FreeSql.Tests.SqliteExpression
var testlinq = select.Where(a => testlinqlist.Contains(a.Int)).ToList();
var testlinq2list = new string[] { };
var testlinq2 = g.sqlite.Delete<TableAllType>().Where(a => testlinq2list.Contains(a.String)).ToSql();
Assert.Equal("DELETE FROM \"tb_alltype\" WHERE (((\"String\") in (NULL)))", testlinq2);
//in not in
var sql111 = select.Where(a => new[] { 1, 2, 3 }.Contains(a.Int)).ToList();

View File

@ -1,22 +1,16 @@
using FreeSql.DataAnnotations;
using FreeSql;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using Xunit;
using System.Linq;
using Newtonsoft.Json.Linq;
using NpgsqlTypes;
using Npgsql.LegacyPostgis;
using System.Linq.Expressions;
using System.Threading.Tasks;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Linq.Expressions;
using System.Threading;
using System.Threading.Tasks;
using Xunit;
using Zeus;
using Zeus.Domain.Enum;
using System.ComponentModel.DataAnnotations;
using System.Reflection;
using System.Threading;
using Newtonsoft.Json;
namespace FreeSql.Tests
{

View File

@ -1,19 +1,13 @@
using FreeSql.DataAnnotations;
using FreeSql;
using FreeSql;
using FreeSql.DataAnnotations;
using kwlib;
using Microsoft.Data.SqlClient;
using System;
using System.Collections.Generic;
using Xunit;
using System.Linq;
using Newtonsoft.Json.Linq;
using NpgsqlTypes;
using Npgsql.LegacyPostgis;
using System.Linq.Expressions;
using System.Threading.Tasks;
using System.ComponentModel.DataAnnotations;
using System.Threading;
using Microsoft.Data.SqlClient;
using kwlib;
using System.Text;
using Xunit;
namespace FreeSql.Tests
{

View File

@ -1,25 +1,13 @@
using FreeSql.DataAnnotations;
using FreeSql;
using FreeSql;
using FreeSql.DataAnnotations;
using kwlib;
using System;
using System.Collections.Generic;
using Xunit;
using System.Linq;
using Newtonsoft.Json.Linq;
using NpgsqlTypes;
using Npgsql.LegacyPostgis;
using System.Linq.Expressions;
using System.Threading.Tasks;
using System.ComponentModel.DataAnnotations;
using System.Threading;
using System.Data.SqlClient;
using kwlib;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
using Newtonsoft.Json;
using System.Net.NetworkInformation;
using System.Net;
using System.Collections;
using System.Threading;
using Xunit;
namespace FreeSql.Tests
{