Skip to content

Commit c5839fd

Browse files
committed
Cleanup code of UnionSubclassEntityPersister
1 parent 16f53ed commit c5839fd

File tree

2 files changed

+34
-32
lines changed

2 files changed

+34
-32
lines changed

src/NHibernate/Criterion/AbstractEmptinessExpression.cs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -35,17 +35,17 @@ public override sealed string ToString()
3535

3636
public override SqlString ToSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery, IDictionary<string, IFilter> enabledFilters)
3737
{
38-
string entityName = criteriaQuery.GetEntityName(criteria, propertyName);
39-
string actualPropertyName = criteriaQuery.GetPropertyName(propertyName);
40-
string sqlAlias = criteriaQuery.GetSQLAlias(criteria, propertyName);
38+
var entityName = criteriaQuery.GetEntityName(criteria, propertyName);
39+
var actualPropertyName = criteriaQuery.GetPropertyName(propertyName);
40+
var sqlAlias = criteriaQuery.GetSQLAlias(criteria, propertyName);
4141

42-
ISessionFactoryImplementor factory = criteriaQuery.Factory;
43-
IQueryableCollection collectionPersister = GetQueryableCollection(entityName, actualPropertyName, factory);
42+
var factory = criteriaQuery.Factory;
43+
var collectionPersister = GetQueryableCollection(entityName, actualPropertyName, factory);
4444

45-
string[] collectionKeys = collectionPersister.KeyColumnNames;
46-
string[] ownerKeys = ((ILoadable)factory.GetEntityPersister(entityName)).IdentifierColumnNames;
45+
var collectionKeys = collectionPersister.KeyColumnNames;
46+
var ownerKeys = ((ILoadable)factory.GetEntityPersister(entityName)).IdentifierColumnNames;
4747

48-
StringBuilder innerSelect = new StringBuilder();
48+
var innerSelect = new StringBuilder();
4949
innerSelect.Append("(select 1 from ")
5050
.Append(collectionPersister.TableName)
5151
.Append(" where ")
@@ -60,15 +60,15 @@ public override SqlString ToSqlString(ICriteria criteria, ICriteriaQuery criteri
6060

6161
innerSelect.Append(")");
6262

63-
return new SqlString(new string[] {ExcludeEmpty ? "exists" : "not exists", innerSelect.ToString()});
63+
return new SqlString(new object[] {ExcludeEmpty ? "exists" : "not exists", innerSelect.ToString()});
6464
}
6565

6666

6767
protected IQueryableCollection GetQueryableCollection(string entityName, string actualPropertyName,
68-
ISessionFactoryImplementor factory)
68+
ISessionFactoryImplementor factory)
6969
{
70-
IPropertyMapping ownerMapping = (IPropertyMapping) factory.GetEntityPersister(entityName);
71-
IType type = ownerMapping.ToType(actualPropertyName);
70+
var ownerMapping = (IPropertyMapping) factory.GetEntityPersister(entityName);
71+
var type = ownerMapping.ToType(actualPropertyName);
7272
if (!type.IsCollectionType)
7373
{
7474
throw new MappingException(

src/NHibernate/Persister/Entity/UnionSubclassEntityPersister.cs

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)