/// <summary> /// 查询指定字段名并返回当前语句 /// </summary> /// <typeparam name="T">实体类类型</typeparam> /// <param name="cmd">查询语句</param> /// <param name="expr">实体类属性</param> /// <exception cref="ExpressionInvalidException">表达式不正确</exception> /// <exception cref="NullAttributeException">没有设置特性</exception> /// <returns>当前语句</returns> /// <example> /// <code lang="C#"> /// <![CDATA[ /// public class UserRepository : DatabaseTable<User> /// { /// //other necessary code /// /// public User GetEntity(Int32 userID) /// { /// return this.Select() /// .Querys<User>(c => new { c.UserID, c.UserName }) /// .Where<User>(c => c.UserID == userID) /// .ToEntity<User>(this) > 0; /// /// //SELECT UserID, UserName From tbl_Users WHERE UserID = @UserID /// //@UserID = userID /// } /// } /// ]]> /// </code> /// </example> public static SelectCommand Querys <T>(this SelectCommand cmd, Expression <Func <T, Object> > expr) { NewExpression left = expr.Body as NewExpression; if (left == null) { throw new ExpressionInvalidException(); } foreach (MemberExpression member in left.Arguments) { DatabaseColumnAttribute attr = ExpressionHelper.GetColumnAttribute(cmd, member); if (attr == null) { continue; } cmd.Query(attr.ColumnName); } return(cmd); }
/// <summary> /// 查询指定字段名并返回当前语句 /// </summary> /// <typeparam name="T">实体类类型</typeparam> /// <param name="cmd">查询语句</param> /// <param name="expr">实体类属性</param> /// <param name="function">合计函数类型</param> /// <param name="aliasesName">字段名的别名</param> /// <exception cref="ExpressionInvalidException">表达式不正确</exception> /// <exception cref="NullAttributeException">没有设置特性</exception> /// <returns>当前语句</returns> /// <example> /// <code lang="C#"> /// <![CDATA[ /// public class UserRepository : DatabaseTable<User> /// { /// //other necessary code /// /// public Int32 Count() /// { /// return this.Select() /// .Query<User>(c => c.UserID, SqlAggregateFunction.Count, "UserCount") /// .Result<Int32>(); /// /// //SELECT COUNT(UserID) AS UserCount From tbl_Users /// } /// } /// ]]> /// </code> /// </example> public static SelectCommand Query <T>(this SelectCommand cmd, Expression <Func <T, Object> > expr, SqlAggregateFunction function, String aliasesName) { DatabaseColumnAttribute attr = SelectCommandExtension.GetColumnAttribute(cmd, expr.Body); return(cmd.Query(function, attr.ColumnName, aliasesName)); }