Esempio n. 1
0
        /// <summary>
        /// 删除一系列对象
        /// </summary>
        /// <param name="expression">where表达式</param>
        /// <param name="adapter"></param>
        /// <returns></returns>
        public int Delete(Expression <Func <V, bool> > expression, FluDataAdapter adapter = null)
        {
            PCDictionary pc = DMClassMap.GetPcDictionary(TypeName);

            CheckSqlTable(pc);
            var command = GetPropertiesDelete(expression);

            return(DataHelper.ExcuteNonQuery(command.Key, CommandType.Text, command.Value.Key, command.Value.Value, adapter, DBString));
        }
Esempio n. 2
0
 private void CheckSqlTable(PCDictionary pc)
 {
     if (pc == null)
     {
         throw new NullReferenceException("No PCDictionary Init : " + typeof(D).FullName);
     }
     if (string.IsNullOrEmpty(pc.TableName))
     {
         throw new NullReferenceException("No Table Name Assigned : " + typeof(D).FullName);
     }
 }
Esempio n. 3
0
        /// <summary>
        /// 删除对象
        /// </summary>
        /// <param name="id"></param>
        /// <param name="adapter">事务adapter</param>
        /// <returns></returns>
        public int Delete(object id, FluDataAdapter adapter = null)
        {
            PCDictionary pc = DMClassMap.GetPcDictionary(TypeName);

            CheckSqlTable(pc);
            string sql = string.Format("DELETE FROM {0} WHERE {1} = {2}p__{1}", pc.TableName, pc.IdName, providerEx.ParameterType);

            string[] param = new string[] { providerEx.ParameterType + "p__" + pc.IdName };
            object[] pv    = new object[] { id };
            return(DataHelper.ExcuteNonQuery(sql, CommandType.Text, param, pv, adapter, DBString));
        }
Esempio n. 4
0
        /// <summary>
        /// 取得单个对象,FOR SQL
        /// </summary>
        /// <param name="id"></param>
        /// <param name="expression">需要查询的属性字段</param>
        /// <param name="flash"></param>
        /// <returns></returns>
        public V GetById(object id, Expression <Func <V, object[]> > expression, bool flash = false)
        {
            PCDictionary pc = DMClassMap.GetPcDictionary(TypeName);

            CheckSqlTable(pc);
            string columns = GetProperties(expression);
            string sql     = string.Format("SELECT {2} FROM {0} WHERE {1} = {3}p__{1}", pc.TableName, pc.IdName, columns, providerEx.ParameterType);

            string[]  param = new string[] { providerEx.ParameterType + "p__" + pc.IdName };
            object[]  pv    = new object[] { id };
            DataTable dt    = DataHelper.Fill(sql, CommandType.Text, param, pv, flash ? DbConntionType.WriteRead : DbConntionType.OnlyRead, dbString: DBString);

            return(Helper.GetObjects <V>(dt).FirstOrDefault());
        }
Esempio n. 5
0
        /// <summary>
        /// 更新需要更新的字段
        /// </summary>
        /// <param name="expression"></param>
        /// <param name="where"></param>
        /// <param name="adapter">事务adapter</param>
        /// <returns></returns>
        public int Update(Expression <Func <V> > expression, Expression <Func <V, bool> > where, FluDataAdapter adapter = null)
        {
            PCDictionary pc = DMClassMap.GetPcDictionary(TypeName);

            CheckSqlTable(pc);
            var command = GetPropertiesUpdate(expression, where);
            var pList   = GetOraParameters(command);

            if (pList == null)
            {
                return(DataHelper.ExcuteNonQuery(command.Key, CommandType.Text, command.Value.Key, command.Value.Value, adapter, DBString));
            }
            return(DataHelper.ExcuteNonQuery3(command.Key, pList, adapter: adapter, dbString: DBString));
        }
Esempio n. 6
0
        public object Insert(Expression <Func <V, object[]> > expression, object[] values, FluDataAdapter adapter = null)
        {
            PCDictionary pc = DMClassMap.GetPcDictionary(TypeName);

            CheckSqlTable(pc);
            int            index = -1;
            var            cols  = GetPropertiesInsert(expression, ref index);
            IList <string> param = cols.Value.ToList();
            IList <object> vals  = values.ToList();
            object         id    = null;

            if (pc.IdIdentity)
            {
                if (providerEx.ProviderType == DbProviderType.Oracle)
                {
                    id = GetInsertId(providerEx.ProviderType, adapter, pc.TableName, pc.SeqName);
                    if (index >= 0)
                    {
                        vals.RemoveAt(index);
                    }
                    vals.Add(id);
                }
            }
            else if (index >= 0)    //非自增主键ID
            {
                id = values[index];
            }
            string sql    = string.Format("INSERT INTO {0}{1}", pc.TableName, cols.Key);
            var    pList  = GetOraParameters(param.ToArray(), vals.ToArray());
            int    result = 0;

            if (pList == null)
            {
                result = DataHelper.ExcuteNonQuery(sql, CommandType.Text, param.ToArray(), vals.ToArray(), adapter, DBString);
            }
            else
            {
                result = DataHelper.ExcuteNonQuery3(sql, pList, adapter: adapter, dbString: DBString);
            }
            if (result > 0)
            {
                if (providerEx.ProviderType != DbProviderType.Oracle && id == null)
                {
                    id = GetInsertId(providerEx.ProviderType, adapter, pc.TableName);
                }
                return(id);
            }
            return(null);
        }
Esempio n. 7
0
        /// <summary>
        /// 是否存在数据
        /// </summary>
        /// <param name="expression"></param>
        /// <param name="values"></param>
        /// <param name="flash"></param>
        /// <returns></returns>
        public int Exists(Expression <Func <V, object[]> > expression, object[] values, bool flash = false)
        {
            PCDictionary pc = DMClassMap.GetPcDictionary(TypeName);

            CheckSqlTable(pc);
            var       kvp = GetPropertiesWhere(expression);
            string    sql = string.Format("SELECT 1 FROM {0} WHERE ROWNUM = 1 {1} ", pc.TableName, kvp.Key);
            DataTable dt  = DataHelper.Fill(sql, CommandType.Text, kvp.Value, values, flash ? DbConntionType.WriteRead : DbConntionType.OnlyRead, dbString: DBString);

            if (dt != null && dt.Rows.Count > 0)
            {
                return(dt.Rows.Count);
            }
            return(0);
        }
Esempio n. 8
0
        /// <summary>
        /// 查询列表
        /// </summary>
        /// <param name="expression">需要查询的字段</param>
        /// <param name="where"></param>
        /// <param name="order">排序表达式</param>
        /// <param name="flash"></param>
        /// <returns></returns>
        public IList <V> Get(Expression <Func <V, object[]> > expression, Expression <Func <V, bool> > where = null, Expression <Func <OrderExpression <V>, object> > order = null, bool flash = false)
        {
            PCDictionary             pc      = DMClassMap.GetPcDictionary(TypeName);
            var                      command = GetPropertiesSelect(expression, where, order);
            IList <IDbDataParameter> pList   = GetOraParameters(command);
            DataTable                dt;

            if (pList != null)
            {
                dt = DataHelper.Fill3(command.Key, pList, dbString: DBString);
            }
            else
            {
                dt = DataHelper.Fill(command.Key, CommandType.Text, command.Value.Key, command.Value.Value, dbString: DBString);
            }
            return(Helper.GetObjects <V>(dt));
        }
Esempio n. 9
0
        /// <summary>
        /// 统计对象总数
        /// </summary>
        /// <param name="expression">查询条件</param>
        /// <param name="flash"></param>
        /// <returns></returns>
        public int Count(Expression <Func <V, bool> > expression = null, bool flash = false)
        {
            PCDictionary pc = DMClassMap.GetPcDictionary(TypeName);

            CheckSqlTable(pc);
            var command = GetPropertiesCount(expression);
            var pList   = GetOraParameters(command);
            int counts  = 0;

            if (pList == null)
            {
                counts = Convert.ToInt32(DataHelper.ExcuteScalar(command.Key, CommandType.Text, command.Value.Key, command.Value.Value, flash ? DbConntionType.WriteRead : DbConntionType.OnlyRead, dbString: DBString));
            }
            else
            {
                counts = Convert.ToInt32(DataHelper.ExcuteScalar3(command.Key, pList, CommandType.Text, flash ? DbConntionType.WriteRead : DbConntionType.OnlyRead, dbString: DBString));
            }
            return(counts);
        }
Esempio n. 10
0
        /// <summary>
        /// 是否存在数据
        /// </summary>
        /// <param name="expression">查询条件</param>
        /// <param name="flash"></param>
        /// <returns></returns>
        public int Exists(Expression <Func <V> > expression, bool flash = false)
        {
            PCDictionary pc = DMClassMap.GetPcDictionary(TypeName);

            CheckSqlTable(pc);
            var       command = GetPropertiesWhere(expression);
            var       pList   = GetOraParameters(command);
            DataTable dt;

            if (pList == null)
            {
                dt = DataHelper.Fill(command.Key, CommandType.Text, command.Value.Key, command.Value.Value, flash ? DbConntionType.WriteRead : DbConntionType.OnlyRead, DBString);
            }
            else
            {
                dt = DataHelper.Fill3(command.Key, pList, type: flash? DbConntionType.WriteRead : DbConntionType.OnlyRead, dbString: DBString);
            }
            return(dt.Rows.Count);
        }
Esempio n. 11
0
        /// <summary>
        /// 更新需要更新的字段
        /// </summary>
        /// <param name="id"></param>
        /// <param name="expression"></param>
        /// <param name="newValues"></param>
        /// <param name="adapter">事务adapter</param>
        /// <returns></returns>
        public int Update(object id, Expression <Func <V, object[]> > expression, object[] newValues, FluDataAdapter adapter = null)
        {
            PCDictionary pc = DMClassMap.GetPcDictionary(TypeName);

            CheckSqlTable(pc);
            var    updates = GetPropertiesUpdate(expression);
            string sql     = string.Format("UPDATE {0} SET {2} WHERE {1} = {3}p__{1}", pc.TableName, pc.IdName, updates.Key, providerEx.ParameterType);

            updates.Value.Add(providerEx.ParameterType + "p__" + pc.IdName);
            var newV = newValues.ToList();

            newV.Add(id);
            var pList = GetOraParameters(updates.Value.ToArray(), newV.ToArray());

            if (pList == null)
            {
                return(DataHelper.ExcuteNonQuery(sql, CommandType.Text, updates.Value.ToArray(), newV.ToArray(), adapter, DBString));
            }
            return(DataHelper.ExcuteNonQuery3(sql, pList, adapter: adapter, dbString: DBString));
        }
Esempio n. 12
0
        /// <summary>
        /// 插入对象
        /// </summary>
        /// <param name="expression"></param>
        /// <param name="adapter">事务adapter</param>
        /// <returns></returns>
        public object Insert(Expression <Func <V> > expression, FluDataAdapter adapter = null)
        {
            PCDictionary pc = DMClassMap.GetPcDictionary(TypeName);

            CheckSqlTable(pc);
            object id;
            var    command = GetPropertiesInsert(expression, out id, adapter);
            var    pList   = GetOraParameters(command);
            long   result  = 0;

            if (pList == null)
            {
                if (providerEx.ProviderType == DbProviderType.Oracle || !pc.IdIdentity)
                {
                    result = DataHelper.ExcuteNonQuery(command.Key, CommandType.Text, command.Value.Key, command.Value.Value, adapter, DBString);
                }
                else
                {
                    string idsql = GetInsertId(providerEx.ProviderType, adapter, pc.TableName).ToString();
                    id = result = Convert.ToInt64(DataHelper.ExcuteScalar(command.Key + idsql, CommandType.Text, command.Value.Key, command.Value.Value, DbConntionType.WriteRead, adapter, DBString));
                }
            }
            else
            {
                if (providerEx.ProviderType == DbProviderType.Oracle || !pc.IdIdentity)
                {
                    result = DataHelper.ExcuteNonQuery3(command.Key, pList, adapter: adapter, dbString: DBString);
                }
                else
                {
                    string idsql = GetInsertId(providerEx.ProviderType, adapter, pc.TableName).ToString();
                    id = result = Convert.ToInt64(DataHelper.ExcuteScalar3(command.Key, pList, CommandType.Text, DbConntionType.WriteRead, adapter, DBString));
                }
            }
            if (result > 0)
            {
                return(id);
            }
            return(null);
        }
Esempio n. 13
0
        protected override Expression VisitMember(MemberExpression m)
        {
            if (m == null)
            {
                return(m);
            }
            PropertyInfo propertyInfo = m.Member as PropertyInfo;

            if (propertyInfo == null)
            {
                return(m);
            }
            PCDictionary pc     = DMClassMap.GetPcDictionary(m_typeName);
            string       column = pc.GetColumn(propertyInfo.Name);

            if (!string.IsNullOrEmpty(column))
            {
                this.m_conditionParts.Push(column);
                LastColumn = column;
            }

            return(m);
        }