mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-06-19 12:28:15 +08:00
- 增加 fsql.Ado.QuerySingle(() => new {}) 扩展方法实现无表查询 SELECT now(), utc_timestamp()
This commit is contained in:
@ -1228,5 +1228,41 @@ SELECT ");
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
#region Ado.QuerySingle(() => new { DateTime.Now })
|
||||
public static T1 QuerySingle<T1>(this IAdo ado, Expression<Func<T1>> selector)
|
||||
{
|
||||
var nt = SelectNoTable((ado as AdoProvider)?._util._orm, selector);
|
||||
return nt.Item1.ToListMrPrivate<T1>(nt.Item3, nt.Item2, null).FirstOrDefault();
|
||||
}
|
||||
#if net40
|
||||
#else
|
||||
async public static Task<T1> QuerySingleAsync<T1>(this IAdo ado, Expression<Func<T1>> selector, CancellationToken cancellationToken = default)
|
||||
{
|
||||
var nt = SelectNoTable((ado as AdoProvider)?._util._orm, selector);
|
||||
var result = await nt.Item1.ToListMrPrivateAsync<T1>(nt.Item3, nt.Item2, null, cancellationToken);
|
||||
return result.FirstOrDefault();
|
||||
}
|
||||
#endif
|
||||
static NativeTuple<Select1Provider<object>, ReadAnonymousTypeAfInfo, string> SelectNoTable(IFreeSql fsql, Expression selector)
|
||||
{
|
||||
var query = fsql.Select<object>() as Select1Provider<object>;
|
||||
var af = query.GetExpressionField(selector);
|
||||
var sql = "";
|
||||
switch (fsql.Ado.DataType)
|
||||
{
|
||||
case DataType.Oracle:
|
||||
case DataType.OdbcOracle:
|
||||
case DataType.GBase:
|
||||
sql = $" SELECT {af.field} FROM dual";
|
||||
break;
|
||||
case DataType.Firebird:
|
||||
sql = $" SELECT FIRST 1 {af.field} FROM rdb$database";
|
||||
break;
|
||||
default:
|
||||
sql = $" SELECT {af.field}";
|
||||
break;
|
||||
}
|
||||
return NativeTuple.Create(query, af, sql);
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
|
@ -713,11 +713,6 @@
|
||||
天津南大通用数据技术股份有限公司成立于2004年,是国产数据库、大数据领域的知名企业,基于 Odbc 的实现
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:FreeSql.DataType.QuestDB">
|
||||
<summary>
|
||||
开源时序数据库 QuestDB
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:FreeSql.AdoNetExtensions.GetIFreeSql(System.Data.IDbConnection)">
|
||||
<summary>
|
||||
获取 IDbConnection 对应的 IFreeSql 实例
|
||||
|
Reference in New Issue
Block a user