/// <summary> /// 数据是否存在 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="condition"></param> /// <returns></returns> public bool Exists <T>(Expression <Func <T, bool> > condition) where T : class, new() { using (ExpressionCondition expression = db.GetExpressionCondition(condition)) { string sql = $"SELECT 0 WHERE EXISTS(SELECT 0 FROM [{typeof(T).GetTableName()}] { expression.ToCondition(out DynamicParameters parameters)} )"; object value = db.ExecuteScalar(CommandType.Text, sql, parameters); return(value != null); } }
/// <summary> /// 查询一个值 /// </summary> public TValue ReadInfo <T, TValue>(Expression <Func <T, TValue> > field, Expression <Func <T, bool> > condition) where T : class, new() { using (ExpressionCondition expression = db.GetExpressionCondition(condition)) { string conditionSql = expression.ToCondition(out DynamicParameters parameters); string sql = $"SELECT TOP 1 { SchemaCache.GetColumnProperty(field).Name } FROM [{typeof(T).GetTableName()}] {conditionSql}"; object value = db.ExecuteScalar(CommandType.Text, sql, parameters); if (value == null) { return(default);
public IDataReader ReadData <T>(Expression <Func <T, bool> > condition, params Expression <Func <T, object> >[] fields) where T : class, new() { string field = string.Join(",", SchemaCache.GetColumns(fields).Select(t => $"[{t.Name}]")); using (ExpressionCondition expression = db.GetExpressionCondition(condition)) { string conditionSql = expression.ToCondition(out DynamicParameters parameters); string sql = $"SELECT {field} FROM [{typeof(T).GetTableName()}] {conditionSql}"; return(db.ReadData(CommandType.Text, sql, parameters)); } }
/// <summary> /// 查询一个值 /// </summary> /// <typeparam name="T"></typeparam> /// <typeparam name="TValue"></typeparam> /// <param name="field"></param> /// <param name="condition"></param> /// <returns></returns> public static TValue ExecuteScalar <T, TValue>(this DbExecutor db, Expression <Func <T, TValue> > field, Expression <Func <T, bool> > condition) where T : class { using (ExpressionCondition expression = new ExpressionCondition()) { expression.Visit(field); string sql = $"SELECT TOP 1 {expression.ToString()} FROM [{typeof(T).GetTableName()}]"; expression.Visit(condition); sql += expression.ToCondition(out DynamicParameters parameters); object value = db.ExecuteScalar(CommandType.Text, sql, parameters); if (value == null) { return(default);
private IExpressionBuilder Add(string key, ExpressionCondition expressionCondition, ExpressionComparer?expressionComparer, object value = null) { expressionParameterDictionary.Add(key, new ExpressionParameter { Name = key, Value = value, Condition = expressionCondition, ExpressionComparer = expressionComparer ?? ExpressionComparer.Equal }); return(this); }
/// <summary> /// 读取一个字段 /// </summary> /// <typeparam name="T"></typeparam> /// <typeparam name="TValue"></typeparam> /// <param name="field"></param> /// <param name="condition"></param> /// <returns></returns> public IEnumerable <TValue> ReadList <T, TValue>(Expression <Func <T, TValue> > field, Expression <Func <T, bool> > condition) where T : class, new() { string fieldName = SchemaCache.GetColumnProperty(field).Name; List <TValue> list = new List <TValue>(); using (ExpressionCondition expression = db.GetExpressionCondition(condition)) { string conditionSql = expression.ToCondition(out DynamicParameters parameters); string sql = $"SELECT {fieldName} FROM [{typeof(T).GetTableName()}] {conditionSql}"; IDataReader reader = db.ReadData(CommandType.Text, sql, parameters); while (reader.Read()) { list.Add((TValue)reader[0]); } if (!reader.IsClosed) { reader.Close(); } } return(list); }