private static string GetSelectSql(DataModel mapping, ISqlBuilder builder, string[] ignorProperties) { ExceptionHelper.FalseThrow <ArgumentNullException>(mapping != null, "mapping"); ExceptionHelper.FalseThrow <ArgumentNullException>(builder != null, "builder"); SelectSqlClauseBuilder selectBuilder = GetSelectSqlClauseBuilder(mapping, ignorProperties); return(string.Format("SELECT {0} FROM {1} ", selectBuilder.ToSqlString(builder), mapping.TableName)); }
private static SelectSqlClauseBuilder GetSelectSqlClauseBuilder(DataModel mapping, string[] ignorProperties) { ExceptionHelper.FalseThrow <ArgumentNullException>(mapping != null, "mapping"); SelectSqlClauseBuilder builder = new SelectSqlClauseBuilder(); FillSqlClauseBuilder(builder, mapping, ClauseBindingFlags.Select, new DoSelectClauseBuilder(DoSelectSqlClauseBuilder), ignorProperties); return(builder); }
/// <summary> /// 根据对象生成SELECT相关的字段。其builder会生成Field1, Field2 AS Name... /// </summary> /// <typeparam name="T"></typeparam> /// <param name="graph"></param> /// <param name="mapping"></param> /// <param name="ignoreProperties"></param> /// <returns></returns> public static SelectSqlClauseBuilder GetSelectSqlClauseBuilder <T>(T graph, ORMappingItemCollection mapping, params string[] ignoreProperties) { ExceptionHelper.FalseThrow <ArgumentNullException>(graph != null, "graph"); ExceptionHelper.FalseThrow <ArgumentNullException>(mapping != null, "mapping"); SelectSqlClauseBuilder builder = new SelectSqlClauseBuilder(); FillSqlClauseBuilder(builder, graph, mapping, ClauseBindingFlags.Select, new DoSqlClauseBuilder <SelectSqlClauseBuilder, T>(DoSelectSqlClauseBuilder <SelectSqlClauseBuilder, T>), ignoreProperties); return(builder); }
private static void FillSqlClauseBuilder(SelectSqlClauseBuilder builder, DataModel mapping, ClauseBindingFlags bindingFlags, DoSelectClauseBuilder builderDelegate, params string[] ignorProperties) { mapping.Properties.ForEach(property => { if (!ignorProperties.Contains(property.Name)) { if (property.OutputMapping) { builderDelegate(builder, property); } } }); }
private static void DoSelectSqlClauseBuilder(SelectSqlClauseBuilder builder, DataProperty property) { builder.AppendItem(property.FieldName); }
/// <summary> /// 根据对象生成SELECT相关的字段。其builder会生成Field1, Field2 AS Name... /// </summary> /// <typeparam name="T"></typeparam> /// <param name="graph"></param> /// <param name="mapping"></param> /// <param name="ignoreProperties"></param> /// <returns></returns> public static string GetSelectSql <T>(T graph, ORMappingItemCollection mapping, params string[] ignoreProperties) { SelectSqlClauseBuilder builder = GetSelectSqlClauseBuilder <T>(graph, mapping, ignoreProperties); return(builder.ToSqlString(TSqlBuilder.Instance)); }