/// <summary> /// 与条件 /// </summary> /// <param name="restrain">另一条件</param> /// <returns>新的条件</returns> public Restrain And(Restrain restrain) { if (restrain == null) { throw new ArgumentNullException("方法Add不接受restrain为空的值"); } Restrain _restrain = Restrain.And(this, restrain); return(_restrain); }
/// <summary> /// 非条件 /// </summary> /// <param name="restrain">条件</param> /// <returns>新的条件</returns> public static Restrain Not(Restrain restrain) { if (restrain == null) { throw new ArgumentNullException("Not方法的restrain参数不允许为空"); } Restrain _restrain = new Restrain(); _restrain.Params = restrain.Params; _restrain.SqlStr = String.Format("AND NOT (1=1 {0})", restrain.SqlStr); return(_restrain); }
/// <summary> /// 等于条件 /// </summary> /// <param name="key">类型的属性</param> /// <param name="value">条件值</param> /// <returns>条件</returns> public static Restrain Eq(string key, object value) { if (String.IsNullOrWhiteSpace(key)) { throw new ArgumentException("Eq方法不接受空白或者空值的Key参数"); } Restrain restrain = new Restrain(); string paramCode = String.Format("__PARAMCODE__{0}_{1}", key.Trim(), Counter); restrain.Params.Add(paramCode, value); restrain.SqlStr = String.Format("AND {0} = {1}", key, paramCode); return(restrain); }
/// <summary> /// 与条件 /// </summary> /// <param name="restrain1">条件1</param> /// <param name="restrain2">条件2</param> /// <returns>新的条件</returns> public static Restrain And(Restrain restrain1, Restrain restrain2) { if (restrain1 == null || restrain2 == null) { throw new ArgumentNullException("And方法的restrain参数不允许为空"); } Restrain _restrain = new Restrain(); foreach (KeyValuePair <string, object> de in restrain1.Params) { _restrain.Params.Add(de.Key, de.Value); } foreach (KeyValuePair <string, object> de in restrain2.Params) { _restrain.Params.Add(de.Key, de.Value); } _restrain.SqlStr = String.Format("AND (1=1 {0}) AND (1=1 {1})", restrain1.SqlStr, restrain2.SqlStr); return(_restrain); }
/// <summary> /// 存在于条件 /// </summary> /// <param name="key">类型的属性</param> /// <param name="values">条件值</param> /// <returns>条件</returns> public static Restrain In(string key, params object[] values) { if (String.IsNullOrWhiteSpace(key)) { throw new ArgumentException("In方法不接受空白或者空值的Key参数"); } Restrain restrain = new Restrain(); StringBuilder stringBuilder = new StringBuilder(); foreach (object value in values) { string paramCode = String.Format("__PARAMCODE__{0}_{1}", key.Trim(), Counter); stringBuilder.AppendFormat(" {0},", paramCode); restrain.Params.Add(paramCode, value); } if (stringBuilder.Length > 0) { stringBuilder.Remove(stringBuilder.Length - 1, 1); } restrain.SqlStr = String.Format("AND {0} IN ({1})", key, stringBuilder); return(restrain); }
public virtual T GetById(string tran, object id) { string message = ""; Type typ = typeof(T); string primaryKeyName = ""; foreach (PropertyInfo pi in typ.GetProperties()) { if (pi.GetCustomAttribute <PrimaryKeyAttribute>() != null) { primaryKeyName = pi.Name; break; } } if (String.IsNullOrWhiteSpace(primaryKeyName)) { throw new FieldAccessException(); } IList <T> dataSet = sqlMaker.Select(tran, OrderBy.GetDefaultOrderBy <T>(), new Limit(), out message, Restrain.Eq(primaryKeyName, id)); if (dataSet.Count > 0) { return(dataSet.First()); } else { return(null); } }