mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-22 10:42:52 +08:00
- 增加 fsql.Ado.QuerySingle(() => new {}) 扩展方法实现无表查询 SELECT now(), utc_timestamp()
This commit is contained in:
parent
b5b820d272
commit
3e5e84f83c
@ -364,6 +364,8 @@ namespace base_entity
|
||||
public string name { get; set; }
|
||||
[Column(MapType = typeof(string))]
|
||||
public string JoinTest01Enum { get; set; }
|
||||
[Column(MapType = typeof(int))]
|
||||
public JoinTest01Enum JoinTest01Enum2 { get; set; }
|
||||
|
||||
[JoinCondition("a.parentcode = b.code")]
|
||||
public JoinTest01 Parent { get; set; }
|
||||
@ -394,7 +396,7 @@ namespace base_entity
|
||||
//.UseConnectionString(FreeSql.DataType.Firebird, @"database=localhost:D:\fbdata\EXAMPLES.fdb;user=sysdba;password=123456;max pool size=5")
|
||||
|
||||
|
||||
//.UseConnectionString(FreeSql.DataType.MySql, "Data Source=127.0.0.1;Port=3306;User ID=root;Password=root;Initial Catalog=cccddd;Charset=utf8;SslMode=none;min pool size=1;Max pool size=2")
|
||||
.UseConnectionString(FreeSql.DataType.MySql, "Data Source=127.0.0.1;Port=3306;User ID=root;Password=root;Initial Catalog=cccddd;Charset=utf8;SslMode=none;min pool size=1;Max pool size=2")
|
||||
|
||||
//.UseConnectionString(FreeSql.DataType.SqlServer, "Data Source=.;Integrated Security=True;Initial Catalog=freesqlTest;Pooling=true;Max Pool Size=3;TrustServerCertificate=true")
|
||||
|
||||
@ -427,6 +429,12 @@ namespace base_entity
|
||||
BaseEntity.Initialization(fsql, () => _asyncUow.Value);
|
||||
#endregion
|
||||
|
||||
var result1x = fsql.Ado.QuerySingle(() => new
|
||||
{
|
||||
DateTime.Now,
|
||||
DateTime.UtcNow,
|
||||
Math.PI
|
||||
});
|
||||
|
||||
|
||||
Dictionary<string, object> dic = new Dictionary<string, object>();
|
||||
@ -506,13 +514,13 @@ namespace base_entity
|
||||
.Replace("a.", e.Tables[a].Alias + ".")
|
||||
.Replace("b.", parentTable.Alias + ".");
|
||||
}
|
||||
e.Result = result;
|
||||
};
|
||||
var joinsql1 = fsql.Select<JoinTest01>()
|
||||
.Include(a => a.Parent.Parent)
|
||||
.Where(a => a.Parent.Parent.code == "001")
|
||||
.Where(a => a.JoinTest01Enum == JoinTest01Enum.f3.ToString())
|
||||
.Where(a => object.Equals(a.JoinTest01Enum, JoinTest01Enum.f3))
|
||||
.Where(a => new[] { JoinTest01Enum.f2, JoinTest01Enum.f3 }.Contains(a.JoinTest01Enum2))
|
||||
.ToSql();
|
||||
|
||||
|
||||
|
@ -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 实例
|
||||
|
Loading…
x
Reference in New Issue
Block a user