/// <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)));
        }