@@ -35,9 +35,7 @@ public UnionSubclassEntityPersister(PersistentClass persistentClass, ICacheConcu
35
35
36
36
// TABLE
37
37
38
- tableName =
39
- persistentClass . Table . GetQualifiedName ( factory . Dialect , factory . Settings . DefaultCatalogName ,
40
- factory . Settings . DefaultSchemaName ) ;
38
+ tableName = persistentClass . Table . GetQualifiedName ( factory . Dialect , factory . Settings . DefaultCatalogName , factory . Settings . DefaultSchemaName ) ;
41
39
42
40
#region Custom SQL
43
41
@@ -125,28 +123,27 @@ public UnionSubclassEntityPersister(PersistentClass persistentClass, ICacheConcu
125
123
126
124
if ( IsMultiTable )
127
125
{
128
- int idColumnSpan = IdentifierColumnSpan ;
129
- List < string > tableNames = new List < string > ( ) ;
130
- List < string [ ] > keyColumns = new List < string [ ] > ( ) ;
126
+ var tableNames = new List < string > ( ) ;
127
+ var keyColumns = new List < string [ ] > ( ) ;
131
128
if ( ! IsAbstract )
132
129
{
133
130
tableNames . Add ( tableName ) ;
134
131
keyColumns . Add ( IdentifierColumnNames ) ;
135
132
}
136
- foreach ( Table tab in persistentClass . SubclassTableClosureIterator )
133
+ foreach ( var tab in persistentClass . SubclassTableClosureIterator )
137
134
{
138
135
if ( ! tab . IsAbstractUnionTable )
139
136
{
140
137
string _tableName =
141
138
tab . GetQualifiedName ( factory . Dialect , factory . Settings . DefaultCatalogName , factory . Settings . DefaultSchemaName ) ;
142
139
tableNames . Add ( _tableName ) ;
143
140
144
- List < string > key = new List < string > ( idColumnSpan ) ;
145
- foreach ( Column column in tab . PrimaryKey . ColumnIterator )
146
- key . Add ( column . GetQuotedName ( factory . Dialect ) ) ;
141
+ var names = tab . PrimaryKey . ColumnIterator
142
+ . Select ( column => column . GetQuotedName ( factory . Dialect ) )
143
+ . ToArray ( ) ;
147
144
148
- keyColumns . Add ( key . ToArray ( ) ) ;
149
- }
145
+ keyColumns . Add ( names ) ;
146
+ }
150
147
}
151
148
152
149
constraintOrderedTableNames = tableNames . ToArray ( ) ;
@@ -322,22 +319,20 @@ protected string GenerateSubquery(PersistentClass model, IMapping mapping)
322
319
}
323
320
}
324
321
325
- StringBuilder buf = new StringBuilder ( ) . Append ( "( " ) ;
326
- IEnumerable < PersistentClass > siter =
327
- new JoinedEnumerable < PersistentClass > ( new SingletonEnumerable < PersistentClass > ( model ) ,
328
- new SafetyEnumerable < PersistentClass > ( model . SubclassIterator ) ) ;
322
+ var buf = new StringBuilder ( "( " ) ;
329
323
330
- foreach ( PersistentClass clazz in siter )
324
+ var persistentClasses = PersistentClasses ( model ) ;
325
+ foreach ( var clazz in persistentClasses )
331
326
{
332
- Table table = clazz . Table ;
327
+ var table = clazz . Table ;
333
328
if ( ! table . IsAbstractUnionTable )
334
329
{
335
330
buf . Append ( "select " ) ;
336
- foreach ( Column col in columns )
331
+ foreach ( var col in columns )
337
332
{
338
333
if ( ! table . ContainsColumn ( col ) )
339
334
{
340
- SqlType sqlType = col . GetSqlTypeCode ( mapping ) ;
335
+ var sqlType = col . GetSqlTypeCode ( mapping ) ;
341
336
buf . Append ( dialect . GetSelectClauseNullString ( sqlType ) ) . Append ( " as " ) ;
342
337
}
343
338
buf . Append ( col . Name ) ;
@@ -360,6 +355,13 @@ protected string GenerateSubquery(PersistentClass model, IMapping mapping)
360
355
return buf . Append ( " )" ) . ToString ( ) ;
361
356
}
362
357
358
+ private static IEnumerable < PersistentClass > PersistentClasses ( PersistentClass model )
359
+ {
360
+ yield return model ;
361
+ foreach ( var subclass in model . SubclassIterator )
362
+ yield return subclass ;
363
+ }
364
+
363
365
protected override string [ ] GetSubclassTableKeyColumns ( int j )
364
366
{
365
367
if ( j != 0 )
0 commit comments