private void SetTablesFromBlittableArray(List <SqlMigrationImportOperation.SqlMigrationTable> tablesToWrite, SqlTable parentTable = null) { foreach (var item in tablesToWrite) { SqlTable table; if (parentTable != null) { table = new SqlEmbeddedTable(item.Name, item.Query, this, item.NewName, parentTable.Name); parentTable.EmbeddedTables.Add((SqlEmbeddedTable)table); EmbeddedTables.Add((SqlEmbeddedTable)table); } else { table = new SqlParentTable(item.Name, item.Query, this, item.NewName, item.Patch); ParentTables.Add((SqlParentTable)table); } if (item.EmbeddedTables != null) { SetTablesFromBlittableArray(item.EmbeddedTables, table); } } }
private static SqlReader GetChildReader(SqlTable parentTable, List <string> childColumns, SqlEmbeddedTable childTable, List <string> parentValues) { if (childColumns.Count > parentTable.PrimaryKeys.Count || parentTable.IsEmbedded) { // This happens in a case when we can not iterate the embedded table only once and have to use multiple queries. return(childTable.GetReaderWhere(parentValues)); } return(childTable.GetReader()); }