diff --git a/FreeSql.DbContext/FreeSql.DbContext.xml b/FreeSql.DbContext/FreeSql.DbContext.xml index 02eb0609..27909b2e 100644 --- a/FreeSql.DbContext/FreeSql.DbContext.xml +++ b/FreeSql.DbContext/FreeSql.DbContext.xml @@ -512,5 +512,14 @@ + + + 批量注入 Repository,可以参考代码自行调整 + + + + + + diff --git a/FreeSql.Tests/FreeSql.Tests/UnitTest5.cs b/FreeSql.Tests/FreeSql.Tests/UnitTest5.cs index c2436f29..917dc93f 100644 --- a/FreeSql.Tests/FreeSql.Tests/UnitTest5.cs +++ b/FreeSql.Tests/FreeSql.Tests/UnitTest5.cs @@ -14,6 +14,18 @@ namespace FreeSql.Tests { public class UnitTest5 { + [Fact] + public void TestDistinctCount() + { + var fsql = g.sqlite; + + var sql = fsql.Select().ToSql(a => SqlExt.DistinctCount(a.status)); + fsql.Select().Aggregate(a => SqlExt.DistinctCount(a.Key.status), out var count); + + Assert.Equal(@"SELECT count(distinct a.""status"") as1 +FROM ""ts_up_dywhere01"" a", sql); + } + [Fact] public void TestUpdateDyWhere() { diff --git a/FreeSql/Extensions/FreeSqlGlobalExpressionCallExtensions.cs b/FreeSql/Extensions/FreeSqlGlobalExpressionCallExtensions.cs index 69ac375f..1d14724f 100644 --- a/FreeSql/Extensions/FreeSqlGlobalExpressionCallExtensions.cs +++ b/FreeSql/Extensions/FreeSqlGlobalExpressionCallExtensions.cs @@ -117,6 +117,18 @@ namespace FreeSql return default(TValue); } + /// + /// count(distinct name) + /// + /// + /// + /// + public static long DistinctCount(T column) + { + expContext.Value.Result = $"count(distinct {expContext.Value.ParsedContent["column"]})"; + return 0; + } + #region 大小判断 /// /// 大于 > diff --git a/FreeSql/FreeSql.xml b/FreeSql/FreeSql.xml index 6a7e15e8..0f9eda96 100644 --- a/FreeSql/FreeSql.xml +++ b/FreeSql/FreeSql.xml @@ -1188,6 +1188,14 @@ + + + count(distinct name) + + + + + 大于 >