@@ -35,9 +35,7 @@ public UnionSubclassEntityPersister(PersistentClass persistentClass, ICacheConcu
3535
3636 // TABLE
3737
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 ) ;
4139
4240 #region Custom SQL
4341
@@ -125,28 +123,27 @@ public UnionSubclassEntityPersister(PersistentClass persistentClass, ICacheConcu
125123
126124 if ( IsMultiTable )
127125 {
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 [ ] > ( ) ;
131128 if ( ! IsAbstract )
132129 {
133130 tableNames . Add ( tableName ) ;
134131 keyColumns . Add ( IdentifierColumnNames ) ;
135132 }
136- foreach ( Table tab in persistentClass . SubclassTableClosureIterator )
133+ foreach ( var tab in persistentClass . SubclassTableClosureIterator )
137134 {
138135 if ( ! tab . IsAbstractUnionTable )
139136 {
140137 string _tableName =
141138 tab . GetQualifiedName ( factory . Dialect , factory . Settings . DefaultCatalogName , factory . Settings . DefaultSchemaName ) ;
142139 tableNames . Add ( _tableName ) ;
143140
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 ( ) ;
147144
148- keyColumns . Add ( key . ToArray ( ) ) ;
149- }
145+ keyColumns . Add ( names ) ;
146+ }
150147 }
151148
152149 constraintOrderedTableNames = tableNames . ToArray ( ) ;
@@ -322,22 +319,20 @@ protected string GenerateSubquery(PersistentClass model, IMapping mapping)
322319 }
323320 }
324321
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 ( "( " ) ;
329323
330- foreach ( PersistentClass clazz in siter )
324+ var persistentClasses = PersistentClasses ( model ) ;
325+ foreach ( var clazz in persistentClasses )
331326 {
332- Table table = clazz . Table ;
327+ var table = clazz . Table ;
333328 if ( ! table . IsAbstractUnionTable )
334329 {
335330 buf . Append ( "select " ) ;
336- foreach ( Column col in columns )
331+ foreach ( var col in columns )
337332 {
338333 if ( ! table . ContainsColumn ( col ) )
339334 {
340- SqlType sqlType = col . GetSqlTypeCode ( mapping ) ;
335+ var sqlType = col . GetSqlTypeCode ( mapping ) ;
341336 buf . Append ( dialect . GetSelectClauseNullString ( sqlType ) ) . Append ( " as " ) ;
342337 }
343338 buf . Append ( col . Name ) ;
@@ -360,6 +355,13 @@ protected string GenerateSubquery(PersistentClass model, IMapping mapping)
360355 return buf . Append ( " )" ) . ToString ( ) ;
361356 }
362357
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+
363365 protected override string [ ] GetSubclassTableKeyColumns ( int j )
364366 {
365367 if ( j != 0 )
0 commit comments