Beispiel #1
0
 /// <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);
     }
 }
Beispiel #2
0
 /// <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);
Beispiel #3
0
        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));
            }
        }
Beispiel #4
0
 /// <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);
Beispiel #5
0
        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);
        }
Beispiel #6
0
        /// <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);
        }