4
4
// Created by: Dmitri Maximov
5
5
// Created: 2008.09.23
6
6
7
+ using System ;
7
8
using System . Collections . Generic ;
8
9
using System . Linq ;
9
10
using Xtensive . Core ;
@@ -18,67 +19,49 @@ namespace Xtensive.Orm.Providers
18
19
/// </summary>
19
20
public sealed class ModelMapping : LockableBase
20
21
{
21
- private readonly Dictionary < TypeInfo , Table > tableMap = new Dictionary < TypeInfo , Table > ( ) ;
22
- private readonly Dictionary < SequenceInfo , SchemaNode > sequenceMap = new Dictionary < SequenceInfo , SchemaNode > ( ) ;
22
+ private Table [ ] tableMap = new Table [ 1 ] ; // Indexed by TypeInfo.SharedId
23
+ private readonly Dictionary < SequenceInfo , SchemaNode > sequenceMap = new ( ) ;
23
24
24
25
private string temporaryTableDatabase ;
25
26
private string temporaryTableSchema ;
26
27
private string temporaryTableCollation ;
27
28
28
29
public string TemporaryTableDatabase
29
30
{
30
- get { return temporaryTableDatabase ; }
31
- set
32
- {
31
+ get => temporaryTableDatabase ;
32
+ set {
33
33
EnsureNotLocked ( ) ;
34
34
temporaryTableDatabase = value ;
35
35
}
36
36
}
37
37
38
38
public string TemporaryTableSchema
39
39
{
40
- get { return temporaryTableSchema ; }
41
- set
42
- {
40
+ get => temporaryTableSchema ;
41
+ set {
43
42
EnsureNotLocked ( ) ;
44
43
temporaryTableSchema = value ;
45
44
}
46
45
}
47
46
48
47
public string TemporaryTableCollation
49
48
{
50
- get { return temporaryTableCollation ; }
51
- set
52
- {
49
+ get => temporaryTableCollation ;
50
+ set {
53
51
EnsureNotLocked ( ) ;
54
52
temporaryTableCollation = value ;
55
53
}
56
54
}
57
55
58
- public Table this [ TypeInfo typeInfo ]
59
- {
60
- get
61
- {
62
- Table result ;
63
- tableMap . TryGetValue ( typeInfo , out result ) ;
64
- return result ;
65
- }
66
- }
56
+ public Table this [ TypeInfo typeInfo ] => typeInfo . SharedId < tableMap . Length ? tableMap [ typeInfo . SharedId ] : null ;
67
57
68
- public SchemaNode this [ SequenceInfo sequenceInfo ]
69
- {
70
- get
71
- {
72
- SchemaNode result ;
73
- sequenceMap . TryGetValue ( sequenceInfo , out result ) ;
74
- return result ;
75
- }
76
- }
58
+ public SchemaNode this [ SequenceInfo sequenceInfo ] => sequenceMap . GetValueOrDefault ( sequenceInfo ) ;
77
59
78
60
public void Register ( TypeInfo typeInfo , Table table )
79
61
{
80
62
EnsureNotLocked ( ) ;
81
- tableMap [ typeInfo ] = table ;
63
+ Array . Resize ( ref tableMap , Math . Max ( tableMap . Length , typeInfo . SharedId + 10 ) ) ;
64
+ tableMap [ typeInfo . SharedId ] = table ;
82
65
}
83
66
84
67
public void Register ( SequenceInfo sequenceInfo , SchemaNode sequence )
@@ -87,15 +70,7 @@ public void Register(SequenceInfo sequenceInfo, SchemaNode sequence)
87
70
sequenceMap [ sequenceInfo ] = sequence ;
88
71
}
89
72
90
- internal IList < SchemaNode > GetAllSchemaNodes ( )
91
- {
92
- return tableMap . Values . Union ( sequenceMap . Values ) . ToList ( ) ;
93
- }
94
-
95
- // Constructors
96
-
97
- internal ModelMapping ( )
98
- {
99
- }
73
+ internal IEnumerable < SchemaNode > GetAllSchemaNodes ( ) =>
74
+ tableMap . Where ( static o => o != null ) . Union ( sequenceMap . Values ) ;
100
75
}
101
- }
76
+ }
0 commit comments