/// <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)); }
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); } }
/// <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)); }
/// <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()); }
/// <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)); }
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); }
/// <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); }
/// <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)); }
/// <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); }
/// <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); }
/// <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)); }
/// <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); }
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); }