@@ -239,9 +239,9 @@ where a.table_schema in ({1}) and a.table_name in ({0})
239239select
240240concat(a.constraint_schema, '.', a.table_name) 'table_id',
241241a.column_name,
242- concat(a.constraint_schema, '/', a.table_name, '/', a. constraint_name) 'index_id',
242+ a. constraint_name 'index_id',
2432431 'IsUnique',
244- case when constraint_name = 'PRIMARY' then 1 else 0 end 'IsPrimaryKey',
244+ case when a. constraint_name = 'PRIMARY' then 1 else 0 end 'IsPrimaryKey',
2452450 'IsClustered',
2462460 'IsDesc'
247247from information_schema.key_column_usage a
@@ -283,21 +283,21 @@ where a.constraint_schema in ({1}) and a.table_name in ({0}) and isnull(position
283283 }
284284 }
285285 foreach ( string table_id in indexColumns . Keys ) {
286- foreach ( var columns in indexColumns [ table_id ] . Values )
287- loc2 [ table_id ] . Indexes . Add ( columns ) ;
286+ foreach ( var column in indexColumns [ table_id ] )
287+ loc2 [ table_id ] . IndexesDict . Add ( column . Key , column . Value ) ;
288288 }
289289 foreach ( string table_id in uniqueColumns . Keys ) {
290- foreach ( var columns in uniqueColumns [ table_id ] . Values ) {
291- columns . Sort ( ( c1 , c2 ) => c1 . Name . CompareTo ( c2 . Name ) ) ;
292- loc2 [ table_id ] . Uniques . Add ( columns ) ;
290+ foreach ( var column in uniqueColumns [ table_id ] ) {
291+ column . Value . Sort ( ( c1 , c2 ) => c1 . Name . CompareTo ( c2 . Name ) ) ;
292+ loc2 [ table_id ] . UniquesDict . Add ( column . Key , column . Value ) ;
293293 }
294294 }
295295
296296 sql = string . Format ( @"
297297select
298298concat(a.constraint_schema, '.', a.table_name) 'table_id',
299299a.column_name,
300- concat(a.constraint_schema, '/', a. constraint_name) 'FKId',
300+ a. constraint_name 'FKId',
301301concat(a.referenced_table_schema, '.', a.referenced_table_name) 'ref_table_id',
3023021 'IsForeignKey',
303303a.referenced_column_name 'ref_column'
@@ -335,8 +335,8 @@ where a.constraint_schema in ({1}) and a.table_name in ({0}) and not isnull(posi
335335 loc13 . ReferencedColumns . Add ( loc11 ) ;
336336 }
337337 foreach ( var table_id in fkColumns . Keys )
338- foreach ( var fk in fkColumns [ table_id ] . Values )
339- loc2 [ table_id ] . Foreigns . Add ( fk ) ;
338+ foreach ( var fk in fkColumns [ table_id ] )
339+ loc2 [ table_id ] . ForeignsDict . Add ( fk . Key , fk . Value ) ;
340340
341341 foreach ( var table_id in loc3 . Keys ) {
342342 foreach ( var loc5 in loc3 [ table_id ] . Values ) {
@@ -346,8 +346,8 @@ where a.constraint_schema in ({1}) and a.table_name in ({0}) and not isnull(posi
346346 }
347347 }
348348 foreach ( var loc4 in loc2 . Values ) {
349- if ( loc4 . Primarys . Count == 0 && loc4 . Uniques . Count > 0 ) {
350- foreach ( var loc5 in loc4 . Uniques [ 0 ] ) {
349+ if ( loc4 . Primarys . Count == 0 && loc4 . UniquesDict . Count > 0 ) {
350+ foreach ( var loc5 in loc4 . UniquesDict . First ( ) . Value ) {
351351 loc5 . IsPrimary = true ;
352352 loc4 . Primarys . Add ( loc5 ) ;
353353 }
@@ -356,8 +356,8 @@ where a.constraint_schema in ({1}) and a.table_name in ({0}) and not isnull(posi
356356 loc4 . Columns . Sort ( ( c1 , c2 ) => {
357357 int compare = c2 . IsPrimary . CompareTo ( c1 . IsPrimary ) ;
358358 if ( compare == 0 ) {
359- bool b1 = loc4 . Foreigns . Find ( fk => fk . Columns . Find ( c3 => c3 . Name == c1 . Name ) != null ) != null ;
360- bool b2 = loc4 . Foreigns . Find ( fk => fk . Columns . Find ( c3 => c3 . Name == c2 . Name ) != null ) != null ;
359+ bool b1 = loc4 . ForeignsDict . Values . Where ( fk => fk . Columns . Where ( c3 => c3 . Name == c1 . Name ) . Any ( ) ) . Any ( ) ;
360+ bool b2 = loc4 . ForeignsDict . Values . Where ( fk => fk . Columns . Where ( c3 => c3 . Name == c2 . Name ) . Any ( ) ) . Any ( ) ;
361361 compare = b2 . CompareTo ( b1 ) ;
362362 }
363363 if ( compare == 0 ) compare = c1 . Name . CompareTo ( c2 . Name ) ;
@@ -370,16 +370,6 @@ where a.constraint_schema in ({1}) and a.table_name in ({0}) and not isnull(posi
370370 if ( ret == 0 ) ret = t1 . Name . CompareTo ( t2 . Name ) ;
371371 return ret ;
372372 } ) ;
373- foreach ( var loc4 in loc1 ) {
374- var dicUniques = new Dictionary < string , List < DbColumnInfo > > ( ) ;
375- if ( loc4 . Primarys . Count > 0 ) dicUniques . Add ( string . Join ( "," , loc4 . Primarys . Select ( a => a . Name ) ) , loc4 . Primarys ) ;
376- foreach ( var loc5 in loc4 . Uniques ) {
377- var dickey = string . Join ( "," , loc5 . Select ( a => a . Name ) ) ;
378- if ( dicUniques . ContainsKey ( dickey ) ) continue ;
379- dicUniques . Add ( dickey , loc5 ) ;
380- }
381- loc4 . Uniques = dicUniques . Values . ToList ( ) ;
382- }
383373
384374 loc2 . Clear ( ) ;
385375 loc3 . Clear ( ) ;
0 commit comments