mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-06-19 04:18:16 +08:00
- 增加 Where In 表达式解析;
- 增加 FreeSqlBuilder.UseConnectionFactory 自定义数据库连接对象的创建方法;
This commit is contained in:
@ -832,12 +832,16 @@ namespace FreeSql.Tests.MySqlConnector
|
||||
var subquery = select.ToSql(a => new
|
||||
{
|
||||
all = a,
|
||||
count = (long)select.Sum(b => b.Id)
|
||||
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
|
||||
limit 0,1) as6
|
||||
FROM `tb_topic` a", subquery);
|
||||
var subqueryList = select.ToList(a => new
|
||||
{
|
||||
all = a,
|
||||
count = (long)select.Sum(b => b.Id)
|
||||
count = (long)select.As("b").Sum(b => b.Id)
|
||||
});
|
||||
}
|
||||
[Fact]
|
||||
@ -846,12 +850,16 @@ namespace FreeSql.Tests.MySqlConnector
|
||||
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 min(b.`Id`)
|
||||
FROM `tb_topic` b
|
||||
limit 0,1) as6
|
||||
FROM `tb_topic` 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]
|
||||
@ -860,12 +868,16 @@ namespace FreeSql.Tests.MySqlConnector
|
||||
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 max(b.`Id`)
|
||||
FROM `tb_topic` b
|
||||
limit 0,1) as6
|
||||
FROM `tb_topic` 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]
|
||||
@ -874,15 +886,29 @@ namespace FreeSql.Tests.MySqlConnector
|
||||
var subquery = select.ToSql(a => new
|
||||
{
|
||||
all = a,
|
||||
count = select.Avg(b => b.Id)
|
||||
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
|
||||
limit 0,1) as6
|
||||
FROM `tb_topic` a", subquery);
|
||||
var subqueryList = select.ToList(a => new
|
||||
{
|
||||
all = a,
|
||||
count = select.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_topic` a
|
||||
WHERE (((cast(a.`Id` as char)) in (SELECT b.`Title`
|
||||
FROM `tb_topic` b)))", subquery);
|
||||
var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
|
||||
}
|
||||
[Fact]
|
||||
public void As()
|
||||
{
|
||||
}
|
||||
|
@ -9,11 +9,13 @@ public class g
|
||||
|
||||
static Lazy<IFreeSql> mysqlLazy = new Lazy<IFreeSql>(() => new FreeSql.FreeSqlBuilder()
|
||||
.UseConnectionString(FreeSql.DataType.MySql, "Data Source=127.0.0.1;Port=3306;User ID=root;Password=root;Initial Catalog=cccddd_mysqlconnector;Charset=utf8;SslMode=none;Max pool size=10")
|
||||
//.UseConnectionFactory(FreeSql.DataType.MySql, () => new MySql.Data.MySqlClient.MySqlConnection("Data Source=127.0.0.1;Port=3306;User ID=root;Password=root;Initial Catalog=cccddd_mysqlconnector;Charset=utf8;SslMode=none;"))
|
||||
.UseAutoSyncStructure(true)
|
||||
//.UseGenerateCommandParameterWithLambda(true)
|
||||
.UseMonitorCommand(
|
||||
cmd =>
|
||||
{
|
||||
cmd.CommandTimeout = 200000;
|
||||
Trace.WriteLine(cmd.CommandText);
|
||||
}, //监听SQL命令对象,在执行前
|
||||
(cmd, traceLog) =>
|
||||
|
Reference in New Issue
Block a user