/// <summary> /// 根据对象拼Update语句时的方法 /// </summary> /// <typeparam name="T">对象类型</typeparam> /// <param name="graph">对象</param> /// <param name="mapping">映射关系</param> /// <param name="ignorProperties">忽略的字段</param> /// <returns>UpdateSqlClauseBuilder对象,供拼Update语句使用</returns> /// <remarks> /// 根据传入的对象和对象映射时需要忽略的字段,返回UpdateSqlClauseBuilder对象,以供后续拼Update语句的字段名称和Values部分 /// <code source="..\Framework\TestProjects\DeluxeWorks.Library.Data.SqlBuilder.Test\ORMappingTest.cs" region="GetUpdateSqlClauseBuilder" lang="cs" title="拼Update语句"/> /// <see cref="MCS.Library.Data.Builder.UpdateSqlClauseBuilder"/> /// </remarks> public static UpdateSqlClauseBuilder GetUpdateSqlClauseBuilder <T>(T graph, ORMappingItemCollection mapping, params string[] ignorProperties) { ExceptionHelper.FalseThrow <ArgumentNullException>(graph != null, "graph"); ExceptionHelper.FalseThrow <ArgumentNullException>(mapping != null, "mapping"); UpdateSqlClauseBuilder builder = new UpdateSqlClauseBuilder(); FillSqlClauseBuilder(builder, graph, mapping, ClauseBindingFlags.Update, new DoSqlClauseBuilder <T>(DoInsertUpdateSqlClauseBuilder <T>), ignorProperties); return(builder); }
/// <summary> /// 根据对象拼Insert语句 /// </summary> /// <typeparam name="T">对象类型</typeparam> /// <param name="graph">对象</param> /// <param name="mapping">映射关系</param> /// <param name="builder">生成Sql语句类型的Builder如TSqlBuilder或PlSqlBuilder</param> /// <param name="ignorProperties">忽略的字段</param> /// <returns>根据传入的对象和对象映射时需要忽略的字段以及类定义上的表名,生成完整的Insert语句</returns> public static string GetUpdateSql <T>(T graph, ORMappingItemCollection mapping, ISqlBuilder builder, params string[] ignorProperties) { ExceptionHelper.FalseThrow <ArgumentNullException>(graph != null, "graph"); ExceptionHelper.FalseThrow <ArgumentNullException>(mapping != null, "mapping"); ExceptionHelper.FalseThrow <ArgumentNullException>(builder != null, "builder"); UpdateSqlClauseBuilder updateBuilder = GetUpdateSqlClauseBuilder(graph, mapping, ignorProperties); WhereSqlClauseBuilder whereBuilder = GetWhereSqlClauseBuilderByPrimaryKey(graph, mapping); return(string.Format("UPDATE {0} SET {1} WHERE {2}", mapping.TableName, updateBuilder.ToSqlString(builder), whereBuilder.ToSqlString(builder))); }