1
1
using System . Collections . Generic ;
2
+ using System . Threading . Tasks ;
2
3
using NHibernate . Criterion ;
3
4
using NHibernate . SqlCommand ;
4
5
using NHibernate . Transform ;
@@ -21,12 +22,20 @@ protected override IList<Customer> GetCustomersWithFetchedOrdersWithoutRestricti
21
22
protected override IList < Customer > GetCustomersWithOrdersEagerLoaded ( ISession session )
22
23
{
23
24
return session . QueryOver < Customer > ( )
24
- . Fetch ( SelectMode . Fetch , n => n . Orders )
25
- . TransformUsing ( new DistinctRootEntityResultTransformer ( ) )
25
+ . Fetch ( SelectMode . Fetch , n => n . Orders )
26
+ . TransformUsing ( new DistinctRootEntityResultTransformer ( ) )
26
27
. List ( ) ;
27
28
}
28
29
29
- protected override IList < Customer > GetCustomersByOrderNumberUsingOnClause ( ISession session , int orderNumber )
30
+ protected override async Task < IList < Customer > > GetCustomersWithOrdersEagerLoadedAsync ( ISession session )
31
+ {
32
+ return await session . QueryOver < Customer > ( )
33
+ . Fetch ( SelectMode . Fetch , n => n . Orders )
34
+ . TransformUsing ( new DistinctRootEntityResultTransformer ( ) )
35
+ . ListAsync ( ) . ConfigureAwait ( false ) ;
36
+ }
37
+
38
+ protected override IList < Customer > GetCustomersByOrderNumberUsingOnClause ( ISession session , int orderNumber )
30
39
{
31
40
Order ordersAlias = null ;
32
41
return session . QueryOver < Customer > ( )
@@ -37,16 +46,69 @@ protected override IList<Customer> GetCustomersByOrderNumberUsingOnClause(ISessi
37
46
. List ( ) ;
38
47
}
39
48
40
- protected override IList < Customer > GetCustomersByOrderNumberUsingWhereClause ( ISession session , int orderNumber )
49
+ protected override async Task < IList < Customer > > GetCustomersByOrderNumberUsingOnClauseAsync ( ISession session , int orderNumber )
50
+ {
51
+ Order ordersAlias = null ;
52
+
53
+ return await session . QueryOver < Customer > ( )
54
+ . JoinAlias ( n => n . Orders ,
55
+ ( ) => ordersAlias ,
56
+ JoinType . LeftOuterJoin ,
57
+ Restrictions . Eq ( "Number" , orderNumber ) )
58
+ . ListAsync ( ) . ConfigureAwait ( false ) ;
59
+ }
60
+
61
+ protected override IList < Customer > GetCustomersWithCompaniesByOrderNumberUsingOnClause ( ISession session , int orderNumber )
62
+ {
63
+ Order ordersAlias = null ;
64
+ Company companiesAlias = null ;
65
+
66
+ return session . QueryOver < Customer > ( )
67
+ . JoinAlias ( n => n . Orders ,
68
+ ( ) => ordersAlias ,
69
+ JoinType . LeftOuterJoin ,
70
+ Restrictions . Eq ( "Number" , orderNumber ) )
71
+ . JoinAlias ( n => n . Companies ,
72
+ ( ) => companiesAlias ,
73
+ JoinType . LeftOuterJoin )
74
+ . List ( ) ;
75
+ }
76
+
77
+ protected override async Task < IList < Customer > > GetCustomersWithCompaniesByOrderNumberUsingOnClauseAsync ( ISession session , int orderNumber )
78
+ {
79
+ Order ordersAlias = null ;
80
+ Company companiesAlias = null ;
81
+
82
+ return await session . QueryOver < Customer > ( )
83
+ . JoinAlias ( n => n . Orders ,
84
+ ( ) => ordersAlias ,
85
+ JoinType . LeftOuterJoin ,
86
+ Restrictions . Eq ( "Number" , orderNumber ) )
87
+ . JoinAlias ( n => n . Companies ,
88
+ ( ) => companiesAlias ,
89
+ JoinType . LeftOuterJoin )
90
+ . ListAsync ( ) . ConfigureAwait ( false ) ;
91
+ }
92
+
93
+ protected override IList < Customer > GetCustomersByOrderNumberUsingWhereClause ( ISession session , int orderNumber )
41
94
{
42
95
Order ordersAlias = null ;
43
96
return session . QueryOver < Customer > ( )
44
97
. JoinQueryOver ( n => n . Orders , ( ) => ordersAlias , JoinType . LeftOuterJoin )
45
- . Where ( Restrictions . Eq ( "Number" , orderNumber ) )
98
+ . Where ( Restrictions . Eq ( "Number" , orderNumber ) )
46
99
. List ( ) ;
47
100
}
48
101
49
- protected override IList < Customer > GetCustomersByNameUsingWhereClause ( ISession session , string customerName )
102
+ protected override async Task < IList < Customer > > GetCustomersByOrderNumberUsingWhereClauseAsync ( ISession session , int orderNumber )
103
+ {
104
+ Order ordersAlias = null ;
105
+ return await session . QueryOver < Customer > ( )
106
+ . JoinQueryOver ( n => n . Orders , ( ) => ordersAlias , JoinType . LeftOuterJoin )
107
+ . Where ( Restrictions . Eq ( "Number" , orderNumber ) )
108
+ . ListAsync ( ) . ConfigureAwait ( false ) ;
109
+ }
110
+
111
+ protected override IList < Customer > GetCustomersByNameUsingWhereClause ( ISession session , string customerName )
50
112
{
51
113
Order ordersAlias = null ;
52
114
return session . QueryOver < Customer > ( )
@@ -60,7 +122,21 @@ protected override IList<Customer> GetCustomersByNameUsingWhereClause(ISession s
60
122
61
123
}
62
124
63
- protected override IList < Customer > GetCustomersByOrderNumberUsingSubqueriesAndByNameUsingWhereClause ( ISession session , int orderNumber , string customerName )
125
+ protected override async Task < IList < Customer > > GetCustomersByNameUsingWhereClauseAsync ( ISession session , string customerName )
126
+ {
127
+ Order ordersAlias = null ;
128
+
129
+ return await session . QueryOver < Customer > ( )
130
+ . JoinAlias ( n => n . Orders ,
131
+ ( ) => ordersAlias ,
132
+ JoinType . LeftOuterJoin
133
+ )
134
+ . Where ( Restrictions . Eq ( "Name" , customerName ) )
135
+ . TransformUsing ( new DistinctRootEntityResultTransformer ( ) )
136
+ . ListAsync ( ) . ConfigureAwait ( false ) ;
137
+ }
138
+
139
+ protected override IList < Customer > GetCustomersByOrderNumberUsingSubqueriesAndByNameUsingWhereClause ( ISession session , int orderNumber , string customerName )
64
140
{
65
141
Order ordersAlias = null ;
66
142
Order ordersAlias2 = null ;
@@ -76,9 +152,30 @@ protected override IList<Customer> GetCustomersByOrderNumberUsingSubqueriesAndBy
76
152
. List ( ) ;
77
153
}
78
154
79
- protected override IList < Customer > GetAllCustomers ( ISession session )
155
+ protected override async Task < IList < Customer > > GetCustomersByOrderNumberUsingSubqueriesAndByNameUsingWhereClauseAsync ( ISession session , int orderNumber , string customerName )
156
+ {
157
+ Order ordersAlias = null ;
158
+ Order ordersAlias2 = null ;
159
+ var subquery = QueryOver . Of < Customer > ( )
160
+ . JoinAlias ( n => n . Orders , ( ) => ordersAlias , JoinType . LeftOuterJoin , Restrictions . Eq ( "Number" , orderNumber ) )
161
+ . Select ( n => n . Id ) ;
162
+
163
+ return await session . QueryOver < Customer > ( )
164
+ . JoinAlias ( n => n . Orders , ( ) => ordersAlias2 , JoinType . LeftOuterJoin )
165
+ . WithSubquery . WhereProperty ( n => n . Id ) . In ( subquery )
166
+ . Where ( Restrictions . Eq ( "Name" , customerName ) )
167
+ . TransformUsing ( new DistinctRootEntityResultTransformer ( ) )
168
+ . ListAsync ( ) . ConfigureAwait ( false ) ;
169
+ }
170
+
171
+ protected override IList < Customer > GetAllCustomers ( ISession session )
80
172
{
81
173
return session . QueryOver < Customer > ( ) . List ( ) ;
82
174
}
83
- }
175
+
176
+ protected override async Task < IList < Customer > > GetAllCustomersAsync ( ISession session )
177
+ {
178
+ return await session . QueryOver < Customer > ( ) . ListAsync ( ) . ConfigureAwait ( false ) ;
179
+ }
180
+ }
84
181
}
0 commit comments