diff --git a/FreeSql/FreeSql.xml b/FreeSql/FreeSql.xml index 01940f0f..7f3b7221 100644 --- a/FreeSql/FreeSql.xml +++ b/FreeSql/FreeSql.xml @@ -2417,6 +2417,137 @@ + + + 查询,若使用读写分离,查询【从库】条件cmdText.StartsWith("SELECT "),否则查询【主库】 + + + + + + + + + 查询,ExecuteReaderAsync(dr => {}, "select * from user where age > ?age", new { age = 25 }) + + + + + + + 查询 + + + + + + + 查询,ExecuteArrayAsync("select * from user where age > ?age", new { age = 25 }) + + + + + + + + 查询 + + + + + + + 查询,ExecuteDataSetAsync("select * from user where age > ?age; select 2", new { age = 25 }) + + + + + + + + 查询 + + + + + + + 查询,ExecuteDataTableAsync("select * from user where age > ?age", new { age = 25 }) + + + + + + + + 在【主库】执行 + + + + + + + + 在【主库】执行,ExecuteNonQueryAsync("delete from user where age > ?age", new { age = 25 }) + + + + + + + + 在【主库】执行 + + + + + + + + 在【主库】执行,ExecuteScalarAsync("select 1 from user where age > ?age", new { age = 25 }) + + + + + + + + 执行SQL返回对象集合,QueryAsync<User>("select * from user where age > ?age", new SqlParameter { ParameterName = "age", Value = 25 }) + + + + + + + + + + 执行SQL返回对象集合,QueryAsync<User>("select * from user where age > ?age", new { age = 25 }) + + + + + + + + + 执行SQL返回对象集合,Query<User>("select * from user where age > ?age; select * from address", new SqlParameter { ParameterName = "age", Value = 25 }) + + + + + + + + + + 执行SQL返回对象集合,Query<User>("select * from user where age > ?age; select * from address", new { age = 25 }) + + + + + + 可自定义解析表达式 @@ -3063,6 +3194,12 @@ 超时 + + + 获取资源 + + + 使用完毕后,归还资源 @@ -3133,6 +3270,12 @@ 资源对象 + + + 从对象池获取对象成功的时候触发,通过该方法统计或初始化对象 + + 资源对象 + 归还对象给对象池的时候触发 @@ -3774,172 +3917,3 @@ -xpression{System.Func{``0,``1,``2,``3,``4,System.Boolean}})"> - - 使用 or 拼接两个 lambda 表达式 - - - - - - 使用 or 拼接两个 lambda 表达式 - - - true 时生效 - - - - - - 将 lambda 表达式取反 - - - true 时生效 - - - - - 生成类似Mongodb的ObjectId有序、不重复Guid - - - - - - 插入数据 - - - - - - - 插入数据,传入实体 - - - - - - - - 插入数据,传入实体数组 - - - - - - - - 插入数据,传入实体集合 - - - - - - - - 插入数据,传入实体集合 - - - - - - - - 插入或更新数据 - MySql: on duplicate key update - PostgreSQL: on conflict do update - SqlServer: merge into - Oracle: merge into - Sqlite: replace into - Dameng: merge into - 注意:还可以使用 FreeSql.Repository 的 InsertOrUpdate 方法 - - - - - - - 修改数据 - - - - - - - 修改数据,传入动态条件,如:主键值 | new[]{主键值1,主键值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1} - - - 主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合 - - - - - 查询数据 - - - - - - - 查询数据,传入动态条件,如:主键值 | new[]{主键值1,主键值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1} - - - 主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合 - - - - - 删除数据 - - - - - - - 删除数据,传入动态条件,如:主键值 | new[]{主键值1,主键值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1} - - - 主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合 - - - - - 开启事务(不支持异步) - v1.5.0 关闭了线程事务超时自动提交的机制 - - 事务体 () => {} - - - - 开启事务(不支持异步) - v1.5.0 关闭了线程事务超时自动提交的机制 - - - 事务体 () => {} - - - - 数据库访问对象 - - - - - 所有拦截方法都在这里 - - - - - CodeFirst 模式开发相关方法 - - - - - DbFirst 模式开发相关方法 - - - - - 全局过滤设置,可默认附加为 Select/Update/Delete 条件 - - - - diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/Select10Provider.cs b/FreeSql/Internal/CommonProvider/SelectProvider/Select10Provider.cs index b960c579..d754293d 100644 --- a/FreeSql/Internal/CommonProvider/SelectProvider/Select10Provider.cs +++ b/FreeSql/Internal/CommonProvider/SelectProvider/Select10Provider.cs @@ -171,9 +171,9 @@ namespace FreeSql.Internal.CommonProvider return this.Where(_commonExpression.ExpressionWhereLambda(_tables, exp?.Body, null, _whereCascadeExpression, _params)).Any(); } - TReturn ISelect.ToOne(Expression> select) => (this as ISelect).ToList(select).FirstOrDefault(); - TReturn ISelect.First(Expression> select) => (this as ISelect).ToList(select).FirstOrDefault(); - TDto ISelect.First() => (this as ISelect).ToList().FirstOrDefault(); + TReturn ISelect.ToOne(Expression> select) => (this as ISelect).Limit(1).ToList(select).FirstOrDefault(); + TReturn ISelect.First(Expression> select) => (this as ISelect).Limit(1).ToList(select).FirstOrDefault(); + TDto ISelect.First() => (this as ISelect).Limit(1).ToList().FirstOrDefault(); #if net40 #else @@ -234,9 +234,9 @@ namespace FreeSql.Internal.CommonProvider return this.Where(_commonExpression.ExpressionWhereLambda(_tables, exp?.Body, null, _whereCascadeExpression, _params)).AnyAsync(); } - async Task ISelect.ToOneAsync(Expression> select) => (await (this as ISelect).ToListAsync(select)).FirstOrDefault(); - async Task ISelect.FirstAsync(Expression> select) => (await (this as ISelect).ToListAsync(select)).FirstOrDefault(); - async Task ISelect.FirstAsync() => (await (this as ISelect).ToListAsync()).FirstOrDefault(); + async Task ISelect.ToOneAsync(Expression> select) => (await (this as ISelect).Limit(1).ToListAsync(select)).FirstOrDefault(); + async Task ISelect.FirstAsync(Expression> select) => (await (this as ISelect).Limit(1).ToListAsync(select)).FirstOrDefault(); + async Task ISelect.FirstAsync() => (await (this as ISelect).Limit(1).ToListAsync()).FirstOrDefault(); #endif } diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/Select2Provider.cs b/FreeSql/Internal/CommonProvider/SelectProvider/Select2Provider.cs index 40e80a2d..2ca2fc1d 100644 --- a/FreeSql/Internal/CommonProvider/SelectProvider/Select2Provider.cs +++ b/FreeSql/Internal/CommonProvider/SelectProvider/Select2Provider.cs @@ -148,9 +148,9 @@ namespace FreeSql.Internal.CommonProvider return this.Where(_commonExpression.ExpressionWhereLambda(_tables, exp?.Body, null, _whereCascadeExpression, _params)).Any(); } - TReturn ISelect.ToOne(Expression> select) => (this as ISelect).ToList(select).FirstOrDefault(); - TReturn ISelect.First(Expression> select) => (this as ISelect).ToList(select).FirstOrDefault(); - TDto ISelect.First() => (this as ISelect).ToList().FirstOrDefault(); + TReturn ISelect.ToOne(Expression> select) => (this as ISelect).Limit(1).ToList(select).FirstOrDefault(); + TReturn ISelect.First(Expression> select) => (this as ISelect).Limit(1).ToList(select).FirstOrDefault(); + TDto ISelect.First() => (this as ISelect).Limit(1).ToList().FirstOrDefault(); #if net40 #else @@ -211,9 +211,9 @@ namespace FreeSql.Internal.CommonProvider return this.Where(_commonExpression.ExpressionWhereLambda(_tables, exp?.Body, null, _whereCascadeExpression, _params)).AnyAsync(); } - async Task ISelect.ToOneAsync(Expression> select) => (await (this as ISelect).ToListAsync(select)).FirstOrDefault(); - async Task ISelect.FirstAsync(Expression> select) => (await (this as ISelect).ToListAsync(select)).FirstOrDefault(); - async Task ISelect.FirstAsync() => (await (this as ISelect).ToListAsync()).FirstOrDefault(); + async Task ISelect.ToOneAsync(Expression> select) => (await (this as ISelect).Limit(1).ToListAsync(select)).FirstOrDefault(); + async Task ISelect.FirstAsync(Expression> select) => (await (this as ISelect).Limit(1).ToListAsync(select)).FirstOrDefault(); + async Task ISelect.FirstAsync() => (await (this as ISelect).Limit(1).ToListAsync()).FirstOrDefault(); #endif } diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/Select3Provider.cs b/FreeSql/Internal/CommonProvider/SelectProvider/Select3Provider.cs index 90177071..27e36b4c 100644 --- a/FreeSql/Internal/CommonProvider/SelectProvider/Select3Provider.cs +++ b/FreeSql/Internal/CommonProvider/SelectProvider/Select3Provider.cs @@ -151,9 +151,9 @@ namespace FreeSql.Internal.CommonProvider return this.Where(_commonExpression.ExpressionWhereLambda(_tables, exp?.Body, null, _whereCascadeExpression, _params)).Any(); } - TReturn ISelect.ToOne(Expression> select) => (this as ISelect).ToList(select).FirstOrDefault(); - TReturn ISelect.First(Expression> select) => (this as ISelect).ToList(select).FirstOrDefault(); - TDto ISelect.First() => (this as ISelect).ToList().FirstOrDefault(); + TReturn ISelect.ToOne(Expression> select) => (this as ISelect).Limit(1).ToList(select).FirstOrDefault(); + TReturn ISelect.First(Expression> select) => (this as ISelect).Limit(1).ToList(select).FirstOrDefault(); + TDto ISelect.First() => (this as ISelect).Limit(1).ToList().FirstOrDefault(); #if net40 #else @@ -214,9 +214,9 @@ namespace FreeSql.Internal.CommonProvider return this.Where(_commonExpression.ExpressionWhereLambda(_tables, exp?.Body, null, _whereCascadeExpression, _params)).AnyAsync(); } - async Task ISelect.ToOneAsync(Expression> select) => (await (this as ISelect).ToListAsync(select)).FirstOrDefault(); - async Task ISelect.FirstAsync(Expression> select) => (await (this as ISelect).ToListAsync(select)).FirstOrDefault(); - async Task ISelect.FirstAsync() => (await (this as ISelect).ToListAsync()).FirstOrDefault(); + async Task ISelect.ToOneAsync(Expression> select) => (await (this as ISelect).Limit(1).ToListAsync(select)).FirstOrDefault(); + async Task ISelect.FirstAsync(Expression> select) => (await (this as ISelect).Limit(1).ToListAsync(select)).FirstOrDefault(); + async Task ISelect.FirstAsync() => (await (this as ISelect).Limit(1).ToListAsync()).FirstOrDefault(); #endif } diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/Select4Provider.cs b/FreeSql/Internal/CommonProvider/SelectProvider/Select4Provider.cs index 36fb28ad..f7cfa25e 100644 --- a/FreeSql/Internal/CommonProvider/SelectProvider/Select4Provider.cs +++ b/FreeSql/Internal/CommonProvider/SelectProvider/Select4Provider.cs @@ -154,9 +154,9 @@ namespace FreeSql.Internal.CommonProvider return this.Where(_commonExpression.ExpressionWhereLambda(_tables, exp?.Body, null, _whereCascadeExpression, _params)).Any(); } - TReturn ISelect.ToOne(Expression> select) => (this as ISelect).ToList(select).FirstOrDefault(); - TReturn ISelect.First(Expression> select) => (this as ISelect).ToList(select).FirstOrDefault(); - TDto ISelect.First() => (this as ISelect).ToList().FirstOrDefault(); + TReturn ISelect.ToOne(Expression> select) => (this as ISelect).Limit(1).ToList(select).FirstOrDefault(); + TReturn ISelect.First(Expression> select) => (this as ISelect).Limit(1).ToList(select).FirstOrDefault(); + TDto ISelect.First() => (this as ISelect).Limit(1).ToList().FirstOrDefault(); #if net40 #else @@ -217,9 +217,9 @@ namespace FreeSql.Internal.CommonProvider return this.Where(_commonExpression.ExpressionWhereLambda(_tables, exp?.Body, null, _whereCascadeExpression, _params)).AnyAsync(); } - async Task ISelect.ToOneAsync(Expression> select) => (await (this as ISelect).ToListAsync(select)).FirstOrDefault(); - async Task ISelect.FirstAsync(Expression> select) => (await (this as ISelect).ToListAsync(select)).FirstOrDefault(); - async Task ISelect.FirstAsync() => (await (this as ISelect).ToListAsync()).FirstOrDefault(); + async Task ISelect.ToOneAsync(Expression> select) => (await (this as ISelect).Limit(1).ToListAsync(select)).FirstOrDefault(); + async Task ISelect.FirstAsync(Expression> select) => (await (this as ISelect).Limit(1).ToListAsync(select)).FirstOrDefault(); + async Task ISelect.FirstAsync() => (await (this as ISelect).Limit(1).ToListAsync()).FirstOrDefault(); #endif } diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/Select5Provider.cs b/FreeSql/Internal/CommonProvider/SelectProvider/Select5Provider.cs index b7b028bc..aeaf7daf 100644 --- a/FreeSql/Internal/CommonProvider/SelectProvider/Select5Provider.cs +++ b/FreeSql/Internal/CommonProvider/SelectProvider/Select5Provider.cs @@ -157,9 +157,9 @@ namespace FreeSql.Internal.CommonProvider return this.Where(_commonExpression.ExpressionWhereLambda(_tables, exp?.Body, null, _whereCascadeExpression, _params)).Any(); } - TReturn ISelect.ToOne(Expression> select) => (this as ISelect).ToList(select).FirstOrDefault(); - TReturn ISelect.First(Expression> select) => (this as ISelect).ToList(select).FirstOrDefault(); - TDto ISelect.First() => (this as ISelect).ToList().FirstOrDefault(); + TReturn ISelect.ToOne(Expression> select) => (this as ISelect).Limit(1).ToList(select).FirstOrDefault(); + TReturn ISelect.First(Expression> select) => (this as ISelect).Limit(1).ToList(select).FirstOrDefault(); + TDto ISelect.First() => (this as ISelect).Limit(1).ToList().FirstOrDefault(); #if net40 #else @@ -220,9 +220,9 @@ namespace FreeSql.Internal.CommonProvider return this.Where(_commonExpression.ExpressionWhereLambda(_tables, exp?.Body, null, _whereCascadeExpression, _params)).AnyAsync(); } - async Task ISelect.ToOneAsync(Expression> select) => (await (this as ISelect).ToListAsync(select)).FirstOrDefault(); - async Task ISelect.FirstAsync(Expression> select) => (await (this as ISelect).ToListAsync(select)).FirstOrDefault(); - async Task ISelect.FirstAsync() => (await (this as ISelect).ToListAsync()).FirstOrDefault(); + async Task ISelect.ToOneAsync(Expression> select) => (await (this as ISelect).Limit(1).ToListAsync(select)).FirstOrDefault(); + async Task ISelect.FirstAsync(Expression> select) => (await (this as ISelect).Limit(1).ToListAsync(select)).FirstOrDefault(); + async Task ISelect.FirstAsync() => (await (this as ISelect).Limit(1).ToListAsync()).FirstOrDefault(); #endif } diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/Select6Provider.cs b/FreeSql/Internal/CommonProvider/SelectProvider/Select6Provider.cs index 33d85c40..a4522c5e 100644 --- a/FreeSql/Internal/CommonProvider/SelectProvider/Select6Provider.cs +++ b/FreeSql/Internal/CommonProvider/SelectProvider/Select6Provider.cs @@ -160,9 +160,9 @@ namespace FreeSql.Internal.CommonProvider return this.Where(_commonExpression.ExpressionWhereLambda(_tables, exp?.Body, null, _whereCascadeExpression, _params)).Any(); } - TReturn ISelect.ToOne(Expression> select) => (this as ISelect).ToList(select).FirstOrDefault(); - TReturn ISelect.First(Expression> select) => (this as ISelect).ToList(select).FirstOrDefault(); - TDto ISelect.First() => (this as ISelect).ToList().FirstOrDefault(); + TReturn ISelect.ToOne(Expression> select) => (this as ISelect).Limit(1).ToList(select).FirstOrDefault(); + TReturn ISelect.First(Expression> select) => (this as ISelect).Limit(1).ToList(select).FirstOrDefault(); + TDto ISelect.First() => (this as ISelect).Limit(1).ToList().FirstOrDefault(); #if net40 #else @@ -223,9 +223,9 @@ namespace FreeSql.Internal.CommonProvider return this.Where(_commonExpression.ExpressionWhereLambda(_tables, exp?.Body, null, _whereCascadeExpression, _params)).AnyAsync(); } - async Task ISelect.ToOneAsync(Expression> select) => (await (this as ISelect).ToListAsync(select)).FirstOrDefault(); - async Task ISelect.FirstAsync(Expression> select) => (await (this as ISelect).ToListAsync(select)).FirstOrDefault(); - async Task ISelect.FirstAsync() => (await (this as ISelect).ToListAsync()).FirstOrDefault(); + async Task ISelect.ToOneAsync(Expression> select) => (await (this as ISelect).Limit(1).ToListAsync(select)).FirstOrDefault(); + async Task ISelect.FirstAsync(Expression> select) => (await (this as ISelect).Limit(1).ToListAsync(select)).FirstOrDefault(); + async Task ISelect.FirstAsync() => (await (this as ISelect).Limit(1).ToListAsync()).FirstOrDefault(); #endif } diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/Select7Provider.cs b/FreeSql/Internal/CommonProvider/SelectProvider/Select7Provider.cs index 2a7c84a8..3b0b4979 100644 --- a/FreeSql/Internal/CommonProvider/SelectProvider/Select7Provider.cs +++ b/FreeSql/Internal/CommonProvider/SelectProvider/Select7Provider.cs @@ -163,9 +163,9 @@ namespace FreeSql.Internal.CommonProvider return this.Where(_commonExpression.ExpressionWhereLambda(_tables, exp?.Body, null, _whereCascadeExpression, _params)).Any(); } - TReturn ISelect.ToOne(Expression> select) => (this as ISelect).ToList(select).FirstOrDefault(); - TReturn ISelect.First(Expression> select) => (this as ISelect).ToList(select).FirstOrDefault(); - TDto ISelect.First() => (this as ISelect).ToList().FirstOrDefault(); + TReturn ISelect.ToOne(Expression> select) => (this as ISelect).Limit(1).ToList(select).FirstOrDefault(); + TReturn ISelect.First(Expression> select) => (this as ISelect).Limit(1).ToList(select).FirstOrDefault(); + TDto ISelect.First() => (this as ISelect).Limit(1).ToList().FirstOrDefault(); #if net40 #else @@ -226,9 +226,9 @@ namespace FreeSql.Internal.CommonProvider return this.Where(_commonExpression.ExpressionWhereLambda(_tables, exp?.Body, null, _whereCascadeExpression, _params)).AnyAsync(); } - async Task ISelect.ToOneAsync(Expression> select) => (await (this as ISelect).ToListAsync(select)).FirstOrDefault(); - async Task ISelect.FirstAsync(Expression> select) => (await (this as ISelect).ToListAsync(select)).FirstOrDefault(); - async Task ISelect.FirstAsync() => (await (this as ISelect).ToListAsync()).FirstOrDefault(); + async Task ISelect.ToOneAsync(Expression> select) => (await (this as ISelect).Limit(1).ToListAsync(select)).FirstOrDefault(); + async Task ISelect.FirstAsync(Expression> select) => (await (this as ISelect).Limit(1).ToListAsync(select)).FirstOrDefault(); + async Task ISelect.FirstAsync() => (await (this as ISelect).Limit(1).ToListAsync()).FirstOrDefault(); #endif } diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/Select8Provider.cs b/FreeSql/Internal/CommonProvider/SelectProvider/Select8Provider.cs index 7942d59d..821d9032 100644 --- a/FreeSql/Internal/CommonProvider/SelectProvider/Select8Provider.cs +++ b/FreeSql/Internal/CommonProvider/SelectProvider/Select8Provider.cs @@ -167,9 +167,9 @@ namespace FreeSql.Internal.CommonProvider return this.Where(_commonExpression.ExpressionWhereLambda(_tables, exp?.Body, null, _whereCascadeExpression, _params)).Any(); } - TReturn ISelect.ToOne(Expression> select) => (this as ISelect).ToList(select).FirstOrDefault(); - TReturn ISelect.First(Expression> select) => (this as ISelect).ToList(select).FirstOrDefault(); - TDto ISelect.First() => (this as ISelect).ToList().FirstOrDefault(); + TReturn ISelect.ToOne(Expression> select) => (this as ISelect).Limit(1).ToList(select).FirstOrDefault(); + TReturn ISelect.First(Expression> select) => (this as ISelect).Limit(1).ToList(select).FirstOrDefault(); + TDto ISelect.First() => (this as ISelect).Limit(1).ToList().FirstOrDefault(); #if net40 #else @@ -230,9 +230,9 @@ namespace FreeSql.Internal.CommonProvider return this.Where(_commonExpression.ExpressionWhereLambda(_tables, exp?.Body, null, _whereCascadeExpression, _params)).AnyAsync(); } - async Task ISelect.ToOneAsync(Expression> select) => (await (this as ISelect).ToListAsync(select)).FirstOrDefault(); - async Task ISelect.FirstAsync(Expression> select) => (await (this as ISelect).ToListAsync(select)).FirstOrDefault(); - async Task ISelect.FirstAsync() => (await (this as ISelect).ToListAsync()).FirstOrDefault(); + async Task ISelect.ToOneAsync(Expression> select) => (await (this as ISelect).Limit(1).ToListAsync(select)).FirstOrDefault(); + async Task ISelect.FirstAsync(Expression> select) => (await (this as ISelect).Limit(1).ToListAsync(select)).FirstOrDefault(); + async Task ISelect.FirstAsync() => (await (this as ISelect).Limit(1).ToListAsync()).FirstOrDefault(); #endif } diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/Select9Provider.cs b/FreeSql/Internal/CommonProvider/SelectProvider/Select9Provider.cs index de4a8a57..fc9e0479 100644 --- a/FreeSql/Internal/CommonProvider/SelectProvider/Select9Provider.cs +++ b/FreeSql/Internal/CommonProvider/SelectProvider/Select9Provider.cs @@ -164,9 +164,9 @@ namespace FreeSql.Internal.CommonProvider return this.Where(_commonExpression.ExpressionWhereLambda(_tables, exp?.Body, null, _whereCascadeExpression, _params)).Any(); } - TReturn ISelect.ToOne(Expression> select) => (this as ISelect).ToList(select).FirstOrDefault(); - TReturn ISelect.First(Expression> select) => (this as ISelect).ToList(select).FirstOrDefault(); - TDto ISelect.First() => (this as ISelect).ToList().FirstOrDefault(); + TReturn ISelect.ToOne(Expression> select) => (this as ISelect).Limit(1).ToList(select).FirstOrDefault(); + TReturn ISelect.First(Expression> select) => (this as ISelect).Limit(1).ToList(select).FirstOrDefault(); + TDto ISelect.First() => (this as ISelect).Limit(1).ToList().FirstOrDefault(); #if net40 #else @@ -228,9 +228,9 @@ namespace FreeSql.Internal.CommonProvider return this.InternalToListAsync(select?.Body); } - async Task ISelect.ToOneAsync(Expression> select) => (await (this as ISelect).ToListAsync(select)).FirstOrDefault(); - async Task ISelect.FirstAsync(Expression> select) => (await (this as ISelect).ToListAsync(select)).FirstOrDefault(); - async Task ISelect.FirstAsync() => (await (this as ISelect).ToListAsync()).FirstOrDefault(); + async Task ISelect.ToOneAsync(Expression> select) => (await (this as ISelect).Limit(1).ToListAsync(select)).FirstOrDefault(); + async Task ISelect.FirstAsync(Expression> select) => (await (this as ISelect).Limit(1).ToListAsync(select)).FirstOrDefault(); + async Task ISelect.FirstAsync() => (await (this as ISelect).Limit(1).ToListAsync()).FirstOrDefault(); #endif } diff --git a/readme.md b/readme.md index a3c5bda3..d6fb36c2 100644 --- a/readme.md +++ b/readme.md @@ -184,7 +184,8 @@ Elapsed: 00:00:00.6495301; Query Entity Counts: 131072; ORM: Dapper [LiaoLiaoWuJu](https://github.com/LiaoLiaoWuJu)、 [hd2y](https://github.com/hd2y)、 [tky753](https://github.com/tky753)、 -[feijie999](https://github.com/feijie999) +[feijie999](https://github.com/feijie999)、 +constantine (QQ群:4336577)