1
1
using System . Collections . Generic ;
2
+ using System . Linq ;
2
3
using NHibernate . Persister . Entity ;
3
4
using NHibernate . Util ;
4
5
@@ -26,18 +27,14 @@ public DefaultEntityAliases(ILoadable persister, string suffix)
26
27
/// </summary>
27
28
public DefaultEntityAliases ( IDictionary < string , string [ ] > userProvidedAliases , ILoadable persister , string suffix )
28
29
{
30
+ ValidateUserProvidedAliases ( userProvidedAliases , persister ) ;
31
+
29
32
this . suffix = suffix ;
30
33
this . userProvidedAliases = userProvidedAliases ;
31
34
32
35
string [ ] keyColumnsCandidates = GetUserProvidedAliases ( persister . IdentifierPropertyName , null ) ;
33
- if ( keyColumnsCandidates == null )
34
- {
35
- suffixedKeyColumns = GetUserProvidedAliases ( EntityPersister . EntityID , GetIdentifierAliases ( persister , suffix ) ) ;
36
- }
37
- else
38
- {
39
- suffixedKeyColumns = keyColumnsCandidates ;
40
- }
36
+ suffixedKeyColumns = keyColumnsCandidates ??
37
+ GetUserProvidedAliases ( EntityPersister . EntityID , GetIdentifierAliases ( persister , suffix ) ) ;
41
38
Intern ( suffixedKeyColumns ) ;
42
39
43
40
suffixedPropertyColumns = GetSuffixedPropertyAliases ( persister ) ;
@@ -54,6 +51,21 @@ public DefaultEntityAliases(IDictionary<string, string[]> userProvidedAliases, I
54
51
rowIdAlias = Loadable . RowIdAlias + suffix ; // TODO: not visible to the user!
55
52
}
56
53
54
+ private static void ValidateUserProvidedAliases ( IDictionary < string , string [ ] > userProvidedAliases , ILoadable persister )
55
+ {
56
+ if ( userProvidedAliases != null && userProvidedAliases . Count > 0 )
57
+ {
58
+ var missingPropertyNames = persister . PropertyNames . Except ( userProvidedAliases . Keys ) . ToArray ( ) ;
59
+ if ( missingPropertyNames . Length > 0 )
60
+ {
61
+ throw new MappingException (
62
+ string . Format (
63
+ "User provided resulset mapping for entity '{0}' misses mappings for the following properties: {1}." ,
64
+ persister . EntityName , string . Join ( ", " , missingPropertyNames ) ) ) ;
65
+ }
66
+ }
67
+ }
68
+
57
69
protected virtual string GetDiscriminatorAlias ( ILoadable persister , string suffix )
58
70
{
59
71
return persister . GetDiscriminatorAlias ( suffix ) ;
0 commit comments