public IEnumerable <T> Select <T>(Expression <Func <T, bool> > expression) where T : BaseModel, new() { Type type = typeof(T); CustomExpressionVisitor visitor = new CustomExpressionVisitor(); visitor.Visit(expression); string where = visitor.GetWhere(); string sql = $"SELECT * FROM {type.GetMappingName()} WHERE {where}"; return(this.ExecuteSql(sql, new SqlParameter[0], comm => { List <T> list = new List <T>(); var reader = comm.ExecuteReader(); while (reader.Read()) { T t = new T(); foreach (var prop in type.GetProperties()) { string propName = prop.GetMappingName(); prop.SetValue(t, reader[propName] is DBNull ? null : reader[propName]); } list.Add(t); } return list; }, SqlConnectionStringPool.DBOperateType.Read)); }
public bool Delete <T>(Expression <Func <T, bool> > expression) { Type type = typeof(T); CustomExpressionVisitor visitor = new CustomExpressionVisitor(); visitor.Visit(expression); string where = visitor.GetWhere(); string sql = $"DELETE FROM {type.GetMappingName()} WHERE {where}"; return(this.ExecuteSql(sql, new SqlParameter[0], comm => comm.ExecuteNonQuery() >= 1)); }