コード例 #1
0
        void IfNotExists(PRecord table)
        {
        #line default
        #line hidden

        #line 146 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
            this.Write("\tif not exists(select top 1 1 from ");


        #line default
        #line hidden

        #line 147 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
            Write(string.Format("{0} {1}", table.TableName, table.GetUniqueSqlWhere()));

        #line default
        #line hidden

        #line 147 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
            this.Write(" )\t\t\t\t\r\n");


        #line default
        #line hidden

        #line 148 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
        }
コード例 #2
0
        public async Task <IEnumerable <PRecord> > GetPTables(string tableName, string where, CancellationToken cancellationToken, ISourceForScript template)
        {
            cancellationToken.ThrowIfCancellationRequested();
            var result = new List <PRecord>();
            var sql    = string.Format("select * from {0} ", tableName);

            if (!string.IsNullOrEmpty(where))
            {
                sql = string.Format("{0} where {1} ", sql, where);
            }

            _log.DebugFormat("GetPTables : {0}", sql);

            using (var uow = _unitOfWorkFactory.GetUnitOfWork())
            {
                var reader = await uow.ExecuteReaderAsync(sql, cancellationToken);

                while (reader.Read())
                {
                    cancellationToken.ThrowIfCancellationRequested();

                    var record = new PRecord(reader, _schema.GetTableMetaData(tableName))
                    {
                        Source = sql.Trim(), ExtractStrategy = GetExtractStrategy(tableName, template), SqlBuildStrategy = GetSqlBuildStrategy(tableName, template)
                    };
                    var processed = processedTables.FirstOrDefault(_ => _.Equals(record));
                    result.Add(processed ?? record);
                }
            }

            return(result);
        }
コード例 #3
0
        public static string IfExistsSql(PRecord table)
        {
            var fields = NotIdentityFields(table);

            var sql = new StringBuilder();

            sql.AppendFormat("if not exists(select top 1 1 from {0} where {1})", table.TableName, table.GetUniqueSqlWhere());
            sql.AppendLine();
            sql.AppendFormat("insert into {0} (", table.TableName);
            sql.Append(string.Join(",", fields.Select(_ => _.FieldName)));
            sql.AppendFormat(")");
            sql.AppendLine("Values(");
            sql.Append(string.Join(",", fields.Select(_ => _.ValueToSqlString())));
            sql.Append(")");

            return(sql.ToString());
        }
コード例 #4
0
 public static IEnumerable <PField> PrepareFieldsForChild(PRecord child, string sqlVar, PDependentTable fk)
 {
     return(InjectSqlVariable(NotIdentityFields(child), sqlVar, child.TableName == fk.ParentTable ? fk.ParentColumn : fk.ReferencedColumn));
 }
コード例 #5
0
 public static IEnumerable <PField> NotIdentityFields(PRecord table)
 {
     return(table.Where(_ => !_.MetaData.IsIdentity));
 }
コード例 #6
0
        void GenerateSql(PRecord child)
        {
            if (!ProcessedItems.Any(_ => _.Equals(child)))
            {
                var fields = SqlHelper.NotIdentityFields(child);

        #line default
        #line hidden

        #line 223 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                this.Write("\t\tdeclare ");


        #line default
        #line hidden

        #line 224 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                Write(string.Format("{0} {1}\n", child.GetPKVarName(), child.PkField.MetaData.SqlType));

        #line default
        #line hidden

        #line 225 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"

                if (!child.PkField.MetaData.IsIdentity &&
                    child.PkField.MetaData.FieldType.IsNumericType() &&
                    !child.SqlBuildStrategy.AsIsInserts)
                {
        #line default
        #line hidden

        #line 230 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                    this.Write("\t\tselect ");


        #line default
        #line hidden

        #line 231 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                    Write(child.GetPKVarName());

        #line default
        #line hidden

        #line 231 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                    this.Write(" = max(");


        #line default
        #line hidden

        #line 231 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                    Write(child.PkField.FieldName);

        #line default
        #line hidden

        #line 231 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                    this.Write(")+1 \r\n\t\tfrom ");


        #line default
        #line hidden

        #line 232 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                    Write(child.TableName);


        #line default
        #line hidden

        #line 234 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                    InsertValues(SqlHelper.InjectSqlVariable(fields, child.GetPKVarName(), child.PkField.FieldName), child.TableName);
                }
                else if (child.PkField.MetaData.IsIdentity)
                {
                    InsertValues(fields, child.TableName);
                    if (child.Childern.Any())
                    {
        #line default
        #line hidden

        #line 241 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                        this.Write("\t\tset ");


        #line default
        #line hidden

        #line 242 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(child.GetPKVarName()));


        #line default
        #line hidden

        #line 242 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                        this.Write(" = SCOPE_IDENTITY()\r\n");


        #line default
        #line hidden

        #line 243 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                    }
                }
                else
                {
                    InsertValues(fields, child.TableName);

        #line default
        #line hidden

        #line 248 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                    this.Write("\t\tset ");


        #line default
        #line hidden

        #line 249 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                    Write(child.GetPKVarName());

        #line default
        #line hidden

        #line 249 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                    this.Write(" = ");


        #line default
        #line hidden

        #line 249 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                    Write(child.PkField.ValueToSqlString());
                }
                Write("\n");
                ProcessedItems.Add(child);
            }
        }
コード例 #7
0
        void GenerateSqlForParent(PRecord parent)
        {
            if (!parent.GetUniqueFields().Any())
            {
                Error("Can not generate sql without PK or unique combination");
            }

            if (!ProcessedItems.Any(_ => _.Equals(parent)))
            {
                var fields = SqlHelper.NotIdentityFields(parent);


        #line default
        #line hidden

        #line 172 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                this.Write("\t\tdeclare ");


        #line default
        #line hidden

        #line 173 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                Write(string.Format("{0} {1}\n", parent.GetPKVarName(), parent.PkField.MetaData.SqlType));

        #line default
        #line hidden

        #line 174 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"



        #line default
        #line hidden

        #line 175 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                this.Write("\t\t");


        #line default
        #line hidden

        #line 175 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                IfNotExists(parent);


        #line default
        #line hidden

        #line 176 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                this.Write("\t\t\tBegin \r\n");


        #line default
        #line hidden

        #line 177 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"

                if (parent.IsNumericPK)
                {
                    if (parent.IsIdentityPK)
                    {
                        InsertValues(fields, parent.TableName);
                        if (parent.Childern.Any())
                        {
        #line default
        #line hidden

        #line 185 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                            this.Write("\t\tset ");


        #line default
        #line hidden

        #line 186 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                            this.Write(this.ToStringHelper.ToStringWithCulture(parent.GetPKVarName()));


        #line default
        #line hidden

        #line 186 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                            this.Write(" = SCOPE_IDENTITY()\r\n");


        #line default
        #line hidden

        #line 187 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                        }
                    }
                    else
                    {
        #line default
        #line hidden

        #line 191 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                        this.Write("\t\t\t\tselect ");


        #line default
        #line hidden

        #line 192 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(parent.GetPKVarName()));


        #line default
        #line hidden

        #line 192 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                        this.Write(" = max(");


        #line default
        #line hidden

        #line 192 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(parent.PkField.FieldName));


        #line default
        #line hidden

        #line 192 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                        this.Write(")+1 \r\n\t\t\t\tfrom ");


        #line default
        #line hidden

        #line 193 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(parent.TableName));


        #line default
        #line hidden

        #line 193 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                        this.Write(" \r\n\t\t");


        #line default
        #line hidden

        #line 194 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                        InsertValues(SqlHelper.InjectSqlVariable(fields, parent.GetPKVarName(), parent.PkField.FieldName), parent.TableName);
                    }
                }
                else
                {
                    InsertValues(fields, parent.TableName);


        #line default
        #line hidden

        #line 200 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                    this.Write("\t\tset ");


        #line default
        #line hidden

        #line 201 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                    Write(parent.GetPKVarName());

        #line default
        #line hidden

        #line 201 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                    this.Write(" = ");


        #line default
        #line hidden

        #line 201 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                    Write(parent.PkField.ValueToSqlString());
                }


        #line default
        #line hidden

        #line 203 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                this.Write("\t\t\tEnd\r\n\t\t\tElse \r\n\t\t\tBegin\r\n\t\t\t\tupdate ");


        #line default
        #line hidden

        #line 206 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(parent.TableName));


        #line default
        #line hidden

        #line 206 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                this.Write(" \r\n\t\t\t\tset ");


        #line default
        #line hidden

        #line 207 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(SqlHelper.GetNameValueForUpdateString(fields)));


        #line default
        #line hidden

        #line 207 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                this.Write(" \r\n\t\t\t\t");


        #line default
        #line hidden

        #line 208 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(parent.GetUniqueSqlWhere()));


        #line default
        #line hidden

        #line 208 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                this.Write(" \r\n\r\n\t\t\t\tselect ");


        #line default
        #line hidden

        #line 210 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(parent.GetPKVarName()));


        #line default
        #line hidden

        #line 210 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                this.Write(" = ");


        #line default
        #line hidden

        #line 210 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(parent.PkField.FieldName));


        #line default
        #line hidden

        #line 210 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                this.Write(" \r\n\t\t\t\tfrom ");


        #line default
        #line hidden

        #line 211 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(parent.TableName));


        #line default
        #line hidden

        #line 211 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                this.Write(" \r\n\t\t\t\t");


        #line default
        #line hidden

        #line 212 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(parent.GetUniqueSqlWhere()));


        #line default
        #line hidden

        #line 212 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                this.Write(" \r\n\r\n\t\t\tEnd ");


        #line default
        #line hidden

        #line 214 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
            }
        }
コード例 #8
0
        void GenerateSqlForNoExtractionTable(PRecord parent)
        {
            if (!ProcessedItems.Any(_ => _.Equals(parent)))
            {
        #line default
        #line hidden

        #line 154 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                this.Write("\t\tdeclare ");


        #line default
        #line hidden

        #line 155 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(string.Format("{0} {1}\n", parent.GetPKVarName(), parent.PkField.MetaData.SqlType)));


        #line default
        #line hidden

        #line 155 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                this.Write(" \r\n\t\tselect ");


        #line default
        #line hidden

        #line 156 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(parent.GetPKVarName()));


        #line default
        #line hidden

        #line 156 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                this.Write(" = ");


        #line default
        #line hidden

        #line 156 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(parent.PkField.FieldName));


        #line default
        #line hidden

        #line 156 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                this.Write(" \r\n\t\tfrom  ");


        #line default
        #line hidden

        #line 157 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(parent.TableName));


        #line default
        #line hidden

        #line 157 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                this.Write("  \r\n\t\t");


        #line default
        #line hidden

        #line 158 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(parent.GetUniqueSqlWhere()));


        #line default
        #line hidden

        #line 158 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                this.Write("\r\n");


        #line default
        #line hidden

        #line 159 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"

                ProcessedItems.Add(parent);
            }
        }
コード例 #9
0
        void ProcessOne(PRecord item, PRecord parentRecord, PDependentTable FK, IList <PRecord> moves = null)
        {
            Console.WriteLine("Process one entry:{0}, parentRecord:{1}", item.ToString(), parentRecord?.ToString());
            moves = moves ?? new List <PRecord>();
            if (moves.Any(_ => _.Equals(item)))
            {
                Console.WriteLine("Shit hits the fan !");
                return;
            }

            moves.Add(item);


            if (item.Parents.Any())
            {
                foreach (var parent in item.Parents)
                {
                    Console.WriteLine("item.Parent {0}", parent.PRecord);
                }

                foreach (var parent in item.Parents)
                {
                    if (!ProcessedItems.Any(_ => _.Equals(parent.PRecord)) &&
                        !moves.Any(_ => _.Equals(parent.PRecord))
                        )
                    {
                        Console.WriteLine("item.Parents, parentRecord:{0}", parent.PRecord?.ToString());
                        if (parent.PRecord.SqlBuildStrategy.NoInserts)
                        {
                            if (parent.PRecord.SqlBuildStrategy.ThrowExecptionIfNotExists)
                            {
                                IfNotExists(parent.PRecord);


        #line default
        #line hidden

        #line 95 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                                this.Write("\t\tRAISERROR(\'Record from table ");


        #line default
        #line hidden

        #line 96 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                                Write(parent.PRecord.TableName);

        #line default
        #line hidden

        #line 96 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                                this.Write(" with unique values ");


        #line default
        #line hidden

        #line 96 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                                Write(SqlHelper.GetNameNormalValueString(parent.PRecord.GetUniqueFields()));

        #line default
        #line hidden

        #line 96 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                                this.Write(" can not be found\', 16, 1) \r\n");


        #line default
        #line hidden

        #line 97 "C:\MyProjects\ParameterizationExtractor\ParameterizationExtractor\ParameterizationExtractor\Templates\DefaultTemplate.tt"
                            }

                            GenerateSqlForNoExtractionTable(parent.PRecord);
                        }
                        else
                        {
                            Console.WriteLine("I am going to print GenerateSqlForParent, parentRecord:{0} item {1}", parent.PRecord?.ToString(), item);
                            GenerateSqlForParent(parent.PRecord);
                        }

                        foreach (var c in parent.PRecord.Childern)
                        {
                            Console.WriteLine("parent.PRecord.Childern {0}", c.PRecord);
                        }

                        foreach (var c in parent.PRecord.Childern.Where(_ => !moves.Any(t => t.Equals(_.PRecord))))
                        {
                            Console.WriteLine("Process parent children:{0}, parentRecord:{1}", c.PRecord.ToString(), parent.PRecord?.ToString());
                            ProcessOne(c.PRecord, parent.PRecord, c.FK, moves);
                        }
                    }

                    SqlHelper.PrepareFieldsForChild(item, parent.PRecord.GetPKVarName(), parent.FK);
                }
            }

            if (parentRecord != null && FK != null)
            {
                SqlHelper.PrepareFieldsForChild(item, parentRecord.GetPKVarName(), FK);
            }


            GenerateSql(item);

            foreach (var child in item.Childern.Where(_ => !moves.Any(t => t.Equals(_.PRecord))))
            {
                ProcessOne(child.PRecord, item, child.FK, moves);
                Write("\n");
            }
        }
コード例 #10
0
ファイル: utility.cs プロジェクト: modulexcite/IL2JS
        public static void PerfMark(PMarker mark)
        {
            PRecord r = new PRecord();
            r.m = mark;
            r.mt = DateTime.Now;

            if (Records.Count == 1000)
                Records.Clear();
            Records.Add(r);
        }
コード例 #11
0
        private async Task <IEnumerable <PRecord> > GetRelatedTables(PRecord table, CancellationToken cancellationToken, ISourceForScript template)
        {
            cancellationToken.ThrowIfCancellationRequested();
            var result = new List <PRecord>();

            var tables = _schema.DependentTables.Where(_ => _.ParentTable == table.TableName)
                         .Union(_schema.DependentTables.Where(_ => _.ReferencedTable == table.TableName));

            foreach (var item in tables)
            {
                cancellationToken.ThrowIfCancellationRequested();
                _log.DebugFormat("parent table: {0} referenced table {1}", item.ParentTable, item.ReferencedTable);
                var extractStrategy = GetExtractStrategy(table.TableName, template);

                Func <string, string, string, Task <IEnumerable <PRecord> > > insertTable = async(tableName, columnName, pkColumn) =>
                {
                    cancellationToken.ThrowIfCancellationRequested();
                    if (!template.TablesToProcess.Any(_ => _.TableName == tableName))
                    {
                        return(await Task.FromResult <IEnumerable <PRecord> >(null));
                    }

                    if (extractStrategy.DependencyToExclude.Any(_ => _ == tableName))
                    {
                        return(await Task.FromResult <IEnumerable <PRecord> >(null));
                    }

                    var value = table.FirstOrDefault(_ => _.FieldName == columnName)?.ValueToSqlString();
                    if (value != null)
                    {
                        var str = string.Format("{0} = {1}", pkColumn, value);
                        return(await GetPTables(tableName, str, cancellationToken, template));
                    }

                    return(await Task.FromResult <IEnumerable <PRecord> >(null));
                };

                if (item.ParentTable == table.TableName &&
                    extractStrategy.ProcessParents)
                {
                    var i = (await insertTable(item.ReferencedTable, item.ParentColumn, item.ReferencedColumn))?.FirstOrDefault();
                    if (i != null)
                    {
                        table.Parents.Add(new PTableDependency()
                        {
                            PRecord = i, FK = item
                        });
                        result.Add(i);
                    }
                }
                if (item.ReferencedTable == table.TableName &&
                    extractStrategy.ProcessChildren)
                {
                    var i = await insertTable(item.ParentTable, item.ReferencedColumn, item.ParentColumn);

                    if (i != null)
                    {
                        foreach (var child in i)
                        {
                            table.Childern.Add(new PTableDependency()
                            {
                                PRecord = child, FK = item
                            });
                        }

                        result.AddRange(i);
                    }
                }
            }

            return(result);
        }