- 增加 Where In 表达式解析;

- 增加 FreeSqlBuilder.UseConnectionFactory 自定义数据库连接对象的创建方法;
This commit is contained in:
28810
2019-12-17 01:39:53 +08:00
parent 51494c31a2
commit e1e3e4a3b2
57 changed files with 1018 additions and 492 deletions

View File

@ -706,15 +706,18 @@ namespace FreeSql.Tests.Odbc.SqlServer
[Fact]
public void Sum()
{
var subquery = select.Where(a => a.Id < 200).ToSql(a => new
var subquery = select.ToSql(a => new
{
all = a,
count = select.Where(b => b.Id < 200).Sum(b => b.Id)
count = (long)select.As("b").Sum(b => b.Id)
});
var subqueryList = select.Where(a => a.Id < 200).ToList(a => new
Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, (SELECT TOP 1 sum(b.[Id])
FROM [tb_topic22] b) as6
FROM [tb_topic22] a", subquery);
var subqueryList = select.ToList(a => new
{
all = a,
count = select.Where(b => b.Id < 200).Sum(b => b.Id)
count = (long)select.As("b").Sum(b => b.Id)
});
}
[Fact]
@ -723,12 +726,15 @@ namespace FreeSql.Tests.Odbc.SqlServer
var subquery = select.ToSql(a => new
{
all = a,
count = select.Min(b => b.Id)
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 TOP 1 min(b.[Id])
FROM [tb_topic22] b) as6
FROM [tb_topic22] a", subquery);
var subqueryList = select.ToList(a => new
{
all = a,
count = select.Min(b => b.Id)
count = select.As("b").Min(b => b.Id)
});
}
[Fact]
@ -737,29 +743,45 @@ namespace FreeSql.Tests.Odbc.SqlServer
var subquery = select.ToSql(a => new
{
all = a,
count = select.Max(b => b.Id)
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 TOP 1 max(b.[Id])
FROM [tb_topic22] b) as6
FROM [tb_topic22] a", subquery);
var subqueryList = select.ToList(a => new
{
all = a,
count = select.Max(b => b.Id)
count = select.As("b").Max(b => b.Id)
});
}
[Fact]
public void Avg()
{
var subquery = select.Where(a => a.Id < 100).ToSql(a => new
var subquery = select.ToSql(a => new
{
all = a,
count = select.Where(b => b.Id < 100).Avg(b => b.Id)
count = select.As("b").Avg(b => b.Id)
});
var subqueryList = select.Where(a => a.Id < 100).ToList(a => new
Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, (SELECT TOP 1 avg(b.[Id])
FROM [tb_topic22] b) as6
FROM [tb_topic22] a", subquery);
var subqueryList = select.ToList(a => new
{
all = a,
count = select.Where(b => b.Id < 100).Avg(b => b.Id)
count = select.As("b").Avg(b => b.Id)
});
}
[Fact]
public void WhereIn()
{
var subquery = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToSql();
Assert.Equal(@"SELECT a.[Id], a.[Clicks], a.[TypeGuid], a.[Title], a.[CreateTime]
FROM [tb_topic22] a
WHERE (((cast(a.[Id] as nvarchar)) in (SELECT b.[Title]
FROM [tb_topic22] b)))", subquery);
var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
}
[Fact]
public void As()
{
}