@@ -8,6 +8,7 @@ namespace NHibernate.Loader
8
8
/// <summary>
9
9
/// EntityAliases which handles the logic of selecting user provided aliases (via return-property),
10
10
/// before using the default aliases.
11
+ /// Based on https://raw.githubusercontent.com/hibernate/hibernate-orm/master/hibernate-core/src/main/java/org/hibernate/loader/DefaultEntityAliases.java
11
12
/// </summary>
12
13
public class DefaultEntityAliases : IEntityAliases
13
14
{
@@ -20,37 +21,40 @@ public class DefaultEntityAliases : IEntityAliases
20
21
private readonly IDictionary < string , string [ ] > userProvidedAliases ;
21
22
22
23
public DefaultEntityAliases ( ILoadable persister , string suffix )
23
- : this ( null , persister , suffix ) { }
24
+ : this ( null , persister , suffix ) { }
24
25
25
26
/// <summary>
26
- /// Calculate and cache select-clause suffixes .
27
+ /// Calculate and cache select-clause aliases .
27
28
/// </summary>
28
29
public DefaultEntityAliases ( IDictionary < string , string [ ] > userProvidedAliases , ILoadable persister , string suffix )
29
30
{
30
31
this . suffix = suffix ;
31
32
this . userProvidedAliases = userProvidedAliases ? . Count > 0 ? userProvidedAliases : null ;
32
33
33
- suffixedKeyColumns = GetSuffixedKeyAliases ( persister , suffix ) ;
34
-
34
+ suffixedKeyColumns = DetermineKeyAliases ( persister , suffix ) ;
35
35
suffixedPropertyColumns = GetSuffixedPropertyAliases ( persister ) ;
36
- suffixedDiscriminatorColumn = GetSuffixedDiscriminatorAlias ( persister , suffix ) ;
36
+ suffixedDiscriminatorColumn = DetermineDiscriminatorAlias ( persister , suffix ) ;
37
37
38
38
suffixedVersionColumn = persister . IsVersioned ? suffixedPropertyColumns [ persister . VersionProperty ] : null ;
39
+ //rowIdAlias is generated on demand in property
39
40
}
40
41
41
- protected virtual string GetDiscriminatorAlias ( ILoadable persister , string suffix )
42
+ private string [ ] DetermineKeyAliases ( ILoadable persister , string suffix )
42
43
{
43
- return persister . GetDiscriminatorAlias ( suffix ) ;
44
- }
44
+ if ( userProvidedAliases == null )
45
+ return GetIdentifierAliases ( persister , suffix ) ;
45
46
46
- protected virtual string [ ] GetIdentifierAliases ( ILoadable persister , string suffix )
47
- {
48
- return persister . GetIdentifierAliases ( suffix ) ;
47
+ return GetUserProvidedAliases (
48
+ persister . IdentifierPropertyName ,
49
+ ( ) => GetUserProvidedAliases ( EntityPersister . EntityID , ( ) => GetIdentifierAliases ( persister , suffix ) ) ) ;
49
50
}
50
51
51
- protected virtual string [ ] GetPropertyAliases ( ILoadable persister , int j )
52
+ private string DetermineDiscriminatorAlias ( ILoadable persister , string suffix )
52
53
{
53
- return persister . GetPropertyAliases ( suffix , j ) ;
54
+ if ( userProvidedAliases == null )
55
+ return GetDiscriminatorAlias ( persister , suffix ) ;
56
+
57
+ return GetUserProvidedAlias ( AbstractEntityPersister . EntityClass , ( ) => GetDiscriminatorAlias ( persister , suffix ) ) ;
54
58
}
55
59
56
60
/// <summary>
@@ -61,6 +65,21 @@ protected string[][] GetPropertiesAliases(ILoadable persister)
61
65
return Enumerable . Range ( 0 , persister . PropertyNames . Length ) . Select ( i => GetPropertyAliases ( persister , i ) ) . ToArray ( ) ;
62
66
}
63
67
68
+ protected virtual string GetDiscriminatorAlias ( ILoadable persister , string suffix )
69
+ {
70
+ return persister . GetDiscriminatorAlias ( suffix ) ;
71
+ }
72
+
73
+ protected virtual string [ ] GetIdentifierAliases ( ILoadable persister , string suffix )
74
+ {
75
+ return persister . GetIdentifierAliases ( suffix ) ;
76
+ }
77
+
78
+ protected virtual string [ ] GetPropertyAliases ( ILoadable persister , int j )
79
+ {
80
+ return persister . GetPropertyAliases ( suffix , j ) ;
81
+ }
82
+
64
83
private string [ ] GetUserProvidedAliases ( string propertyPath , Func < string [ ] > getDefaultAliases )
65
84
{
66
85
string [ ] result = propertyPath == null ? null : GetUserProvidedAlias ( propertyPath ) ;
@@ -94,24 +113,9 @@ private string GetUserProvidedAlias(string propertyPath, Func<string> getDefault
94
113
}
95
114
}
96
115
97
- private string GetSuffixedDiscriminatorAlias ( ILoadable persister , string suffix )
98
- {
99
- if ( userProvidedAliases == null )
100
- return GetDiscriminatorAlias ( persister , suffix ) ;
101
-
102
- return GetUserProvidedAlias ( AbstractEntityPersister . EntityClass , ( ) => GetDiscriminatorAlias ( persister , suffix ) ) ;
103
- }
104
-
105
- private string [ ] GetSuffixedKeyAliases ( ILoadable persister , string suffix )
106
- {
107
- if ( userProvidedAliases == null )
108
- return GetIdentifierAliases ( persister , suffix ) ;
109
-
110
- return GetUserProvidedAliases (
111
- persister . IdentifierPropertyName ,
112
- ( ) => GetUserProvidedAliases ( EntityPersister . EntityID , ( ) => GetIdentifierAliases ( persister , suffix ) ) ) ;
113
- }
114
-
116
+ /// <summary>
117
+ /// Returns aliases for subclass persister
118
+ /// </summary>
115
119
public string [ ] [ ] GetSuffixedPropertyAliases ( ILoadable persister )
116
120
{
117
121
if ( userProvidedAliases == null )
0 commit comments