Skip to content

Commit 2475764

Browse files
committed
Clean up
1 parent a21fb4a commit 2475764

File tree

5 files changed

+41
-51
lines changed

5 files changed

+41
-51
lines changed

src/NHibernate/Criterion/EntityProjection.cs

Lines changed: 13 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ public class EntityProjection : IProjection
1717
private string _entityAlias;
1818
private System.Type _rootEntity;
1919
private IType[] _types;
20+
private string[] _identifierColumnAliases;
2021

2122
/// <summary>
2223
/// Root entity projection
@@ -46,20 +47,15 @@ public EntityProjection(System.Type rootEntity, string entityAlias)
4647
/// </summary>
4748
public bool Lazy { get; set; }
4849

49-
internal string[] IdentifierColumnAliases { get; set; }
5050
internal IQueryable Persister { get; private set; }
51-
52-
53-
public string ColumnAliasSuffix { get; private set; }
54-
public string TableAlias { get; private set; }
51+
internal string ColumnAliasSuffix { get; private set; }
52+
internal string TableAlias { get; private set; }
5553

5654
#region Configuration methods
5755

5856
/// <summary>
5957
/// Lazy load entity
6058
/// </summary>
61-
/// <param name="lazy"></param>
62-
/// <returns></returns>
6359
public EntityProjection SetLazy(bool lazy = true)
6460
{
6561
Lazy = lazy;
@@ -69,8 +65,6 @@ public EntityProjection SetLazy(bool lazy = true)
6965
/// <summary>
7066
/// Fetch lazy properties
7167
/// </summary>
72-
/// <param name="fetchLazyProperties"></param>
73-
/// <returns></returns>
7468
public EntityProjection SetFetchLazyProperties(bool fetchLazyProperties = true)
7569
{
7670
FetchLazyProperties = fetchLazyProperties;
@@ -81,27 +75,15 @@ public EntityProjection SetFetchLazyProperties(bool fetchLazyProperties = true)
8175

8276
#region IProjection implementation
8377

84-
/// <summary>
85-
/// Entity alias
86-
/// </summary>
87-
public string[] Aliases
88-
{
89-
get { return new[] {_entityAlias}; }
90-
}
78+
string[] IProjection.Aliases => new[] { _entityAlias };
9179

92-
bool IProjection.IsAggregate
93-
{
94-
get { return false; }
95-
}
80+
bool IProjection.IsAggregate => false;
9681

97-
bool IProjection.IsGrouped
98-
{
99-
get { return false; }
100-
}
82+
bool IProjection.IsGrouped => false;
10183

10284
IType[] IProjection.GetTypes(string alias, ICriteria criteria, ICriteriaQuery criteriaQuery)
10385
{
104-
return new[] {criteriaQuery.GetType(criteria, alias)};
86+
return new[] { criteriaQuery.GetType(criteria, alias) };
10587
}
10688

10789
IType[] IProjection.GetTypes(ICriteria criteria, ICriteriaQuery criteriaQuery)
@@ -115,19 +97,18 @@ string[] IProjection.GetColumnAliases(int position, ICriteria criteria, ICriteri
11597
{
11698
SetFields(criteria, criteriaQuery);
11799

118-
return IdentifierColumnAliases;
100+
return _identifierColumnAliases;
119101
}
120102

121103
string[] IProjection.GetColumnAliases(string alias, int position, ICriteria criteria, ICriteriaQuery criteriaQuery)
122104
{
123105
SetFields(criteria, criteriaQuery);
124106

125-
return IdentifierColumnAliases;
107+
return _identifierColumnAliases;
126108
}
127109

128110
SqlString IProjection.ToSqlString(ICriteria criteria, int position, ICriteriaQuery criteriaQuery)
129111
{
130-
//return new SqlString(string.Empty);
131112
SetFields(criteria, criteriaQuery);
132113

133114
string identifierSelectFragment = Persister.IdentifierSelectFragment(TableAlias, ColumnAliasSuffix);
@@ -141,12 +122,12 @@ SqlString IProjection.ToSqlString(ICriteria criteria, int position, ICriteriaQue
141122

142123
SqlString IProjection.ToGroupSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery)
143124
{
144-
throw new NotImplementedException();
125+
throw new InvalidOperationException("not a grouping projection");
145126
}
146127

147128
TypedValue[] IProjection.GetTypedValues(ICriteria criteria, ICriteriaQuery criteriaQuery)
148129
{
149-
throw new NotImplementedException();
130+
return Array.Empty<TypedValue>();
150131
}
151132

152133
#endregion IProjection implementation
@@ -192,9 +173,9 @@ private void SetFields(ICriteria criteria, ICriteriaQuery criteriaQuery)
192173

193174
ColumnAliasSuffix = BasicLoader.GenerateSuffix(criteriaQuery.GetIndexForAlias());
194175

195-
IdentifierColumnAliases = Persister.GetIdentifierAliases(ColumnAliasSuffix);
176+
_identifierColumnAliases = Persister.GetIdentifierAliases(ColumnAliasSuffix);
196177

197-
_types = new IType[] {TypeFactory.ManyToOne(Persister.EntityName, true),};
178+
_types = new IType[] { TypeFactory.ManyToOne(Persister.EntityName, true), };
198179
}
199180
}
200181
}

src/NHibernate/Criterion/ProjectionsExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public static IProjection WithAlias(this IProjection projection,
2525
/// Create an alias for a projection
2626
/// </summary>
2727
/// <param name="projection">the projection instance</param>
28-
/// <param name="alias">LambdaExpression returning an alias</param>
28+
/// <param name="alias">alias</param>
2929
/// <returns>return NHibernate.Criterion.IProjection</returns>
3030
public static IProjection WithAlias(this IProjection projection, string alias)
3131
{

src/NHibernate/Loader/AbstractEntityJoinWalker.cs

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
using System;
22
using System.Collections.Generic;
3-
using System.Linq;
43
using NHibernate.Criterion;
54
using NHibernate.Engine;
65
using NHibernate.Loader.Criteria;
@@ -40,26 +39,37 @@ protected virtual void InitAll(SqlString whereString, SqlString orderByString, L
4039
InitStatementString(whereString, orderByString, lockMode);
4140
}
4241

43-
protected void InitProjection(SqlString projectionString, SqlString whereString, SqlString orderByString, SqlString groupByString, SqlString havingString, IDictionary<string, IFilter> enabledFilters, LockMode lockMode, IList<EntityProjection> entityProjections = null)
42+
//Since v5.1
43+
[Obsolete("Please use InitProjection(SqlString projectionString, SqlString whereString, SqlString orderByString, SqlString groupByString, SqlString havingString, IDictionary<string, IFilter> enabledFilters, LockMode lockMode, IList<EntityProjection> entityProjections) instead")]
44+
protected void InitProjection(SqlString projectionString, SqlString whereString, SqlString orderByString, SqlString groupByString, SqlString havingString, IDictionary<string, IFilter> enabledFilters, LockMode lockMode)
45+
{
46+
InitProjection(projectionString, whereString, orderByString, groupByString, havingString, enabledFilters, lockMode, Array.Empty<EntityProjection>());
47+
}
48+
49+
protected void InitProjection(SqlString projectionString, SqlString whereString, SqlString orderByString, SqlString groupByString, SqlString havingString, IDictionary<string, IFilter> enabledFilters, LockMode lockMode, IList<EntityProjection> entityProjections)
4450
{
4551
WalkEntityTree(persister, Alias);
46-
if (entityProjections?.Count > 0)
52+
53+
int countEntities = entityProjections.Count;
54+
if (countEntities > 0)
4755
{
48-
var list = new List<OuterJoinableAssociation>();
49-
var eagerProps = new bool[entityProjections.Count];
50-
for (var i = 0; i < entityProjections.Count; i++)
56+
var associations = new OuterJoinableAssociation[countEntities];
57+
var eagerProps = new bool[countEntities];
58+
var suffixes = new string[countEntities];
59+
for (var i = 0; i < countEntities; i++)
5160
{
5261
var e = entityProjections[i];
53-
list.Add(
54-
CreateAssociation(e.Persister.EntityMetamodel.EntityType, e.TableAlias));
62+
associations[i] = CreateAssociation(e.Persister.EntityMetamodel.EntityType, e.TableAlias);
5563
if (e.FetchLazyProperties)
5664
{
5765
eagerProps[i] = true;
5866
}
67+
suffixes[i] = e.ColumnAliasSuffix;
5968
}
6069

61-
InitPersisters(list, lockMode);
62-
Suffixes = entityProjections.Select(ep => ep.ColumnAliasSuffix).ToArray();
70+
InitPersisters(associations, lockMode);
71+
72+
Suffixes = suffixes;
6373
EagerPropertyFetches = eagerProps;
6474
}
6575
else
@@ -69,7 +79,6 @@ protected void InitProjection(SqlString projectionString, SqlString whereString,
6979
}
7080

7181
InitStatementString(projectionString, whereString, orderByString, groupByString, havingString, lockMode);
72-
7382
}
7483

7584
private OuterJoinableAssociation CreateAssociation(EntityType entityType, string tableAlias)

src/NHibernate/Loader/Criteria/CriteriaQueryTranslator.cs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public class CriteriaQueryTranslator : ICriteriaQuery, ISupportEntityProjectionC
2626
private readonly string rootEntityName;
2727
private readonly string rootSQLAlias;
2828
private int indexForAlias = 0;
29-
private IList<EntityProjection> _entityProjections = new List<EntityProjection>();
29+
private readonly List<EntityProjection> entityProjections = new List<EntityProjection>();
3030

3131
private readonly IDictionary<ICriteria, ICriteriaInfoProvider> criteriaInfoMap =
3232
new Dictionary<ICriteria, ICriteriaInfoProvider>();
@@ -46,7 +46,6 @@ public class CriteriaQueryTranslator : ICriteriaQuery, ISupportEntityProjectionC
4646
private readonly ICollection<IParameterSpecification> collectedParameterSpecifications;
4747
private readonly ICollection<NamedParameter> namedParameters;
4848
private readonly ISet<string> subQuerySpaces = new HashSet<string>();
49-
public IList<EntityProjection> entityProjections = new List<EntityProjection>();
5049

5150

5251

@@ -195,12 +194,12 @@ public string[] ProjectedAliases
195194

196195
public IList<EntityProjection> GetEntityProjections()
197196
{
198-
return _entityProjections;
197+
return entityProjections;
199198
}
200199

201200
public void RegisterEntityProjection(EntityProjection projection)
202201
{
203-
_entityProjections.Add(projection);
202+
entityProjections.Add(projection);
204203
}
205204

206205
public SqlString GetWhereCondition()
@@ -878,6 +877,6 @@ private void CreateSubQuerySpaces()
878877
subQuerySpaces.UnionWith(translator.GetQuerySpaces());
879878
}
880879

881-
}
880+
}
882881
}
883-
}
882+
}

src/NHibernate/Loader/Criteria/ISupportEntityProjectionCriteriaQuery.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@
22

33
namespace NHibernate.Loader.Criteria
44
{
5+
// 6.0 TODO: merge into 'ICriteriaQuery'.
56
public interface ISupportEntityProjectionCriteriaQuery
67
{
78
void RegisterEntityProjection(EntityProjection projection);
89
}
9-
}
10+
}

0 commit comments

Comments
 (0)