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" }
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); }
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()); }
public static IEnumerable <PField> PrepareFieldsForChild(PRecord child, string sqlVar, PDependentTable fk) { return(InjectSqlVariable(NotIdentityFields(child), sqlVar, child.TableName == fk.ParentTable ? fk.ParentColumn : fk.ReferencedColumn)); }
public static IEnumerable <PField> NotIdentityFields(PRecord table) { return(table.Where(_ => !_.MetaData.IsIdentity)); }
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); } }
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" } }
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); } }
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"); } }
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); }
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); }