8
8
//------------------------------------------------------------------------------
9
9
10
10
11
+ using System . Linq ;
11
12
using NUnit . Framework ;
13
+ using NHibernate . Linq ;
12
14
13
15
namespace NHibernate . Test . NHSpecificTest . GH1921
14
16
{
@@ -102,23 +104,37 @@ public async Task DmlDeleteAsync(bool filtered)
102
104
103
105
[ TestCase ( null ) ]
104
106
[ TestCase ( "NameFilter" ) ]
105
- [ TestCase ( "OtherNameFilter" , IgnoreReason = "Not supported" ) ]
107
+ [ TestCase ( "OtherNameFilter" ) ]
106
108
public async Task MultiTableDmlInsertAsync ( string filter , CancellationToken cancellationToken = default ( CancellationToken ) )
107
109
{
110
+ var isFiltered = ! string . IsNullOrEmpty ( filter ) ;
111
+
108
112
using ( var session = OpenSession ( ) )
109
113
using ( var transaction = session . BeginTransaction ( ) )
110
114
{
111
- if ( ! string . IsNullOrEmpty ( filter ) )
115
+ if ( isFiltered )
112
116
session . EnableFilter ( filter ) . SetParameter ( "name" , "Bob" ) ;
113
117
var rowCount =
114
118
await ( session
115
119
. CreateQuery (
116
120
// No insert of OtherName: not supported (INSERT statements cannot refer to superclass/joined properties)
117
- "insert into MultiTableEntity (Name) select e.Name from Entity e" )
121
+ "insert into MultiTableEntity (Name) select e.Name from MultiTableEntity e" )
118
122
. ExecuteUpdateAsync ( cancellationToken ) ) ;
119
123
await ( transaction . CommitAsync ( cancellationToken ) ) ;
120
124
121
- Assert . That ( rowCount , Is . EqualTo ( string . IsNullOrEmpty ( filter ) ? 2 : 1 ) ) ;
125
+ Assert . That ( rowCount , Is . EqualTo ( isFiltered ? 1 : 2 ) , "ResultCount" ) ;
126
+ }
127
+
128
+ using ( var session = OpenSession ( ) )
129
+ using ( var transaction = session . BeginTransaction ( ) )
130
+ {
131
+ Assert . That (
132
+ await ( session . Query < MultiTableEntity > ( ) . CountAsync ( e => e . Name != "Bob" , cancellationToken ) ) ,
133
+ Is . EqualTo ( isFiltered ? 1 : 2 ) , "Name != \" Bob\" " ) ;
134
+ Assert . That (
135
+ await ( session . Query < MultiTableEntity > ( ) . CountAsync ( e => e . OtherName == null , cancellationToken ) ) ,
136
+ Is . EqualTo ( isFiltered ? 1 : 2 ) , "OtherName is null" ) ;
137
+ await ( transaction . CommitAsync ( cancellationToken ) ) ;
122
138
}
123
139
}
124
140
@@ -127,10 +143,12 @@ public async Task DmlDeleteAsync(bool filtered)
127
143
[ TestCase ( "OtherNameFilter" ) ]
128
144
public async Task MultiTableDmlUpdateAsync ( string filter , CancellationToken cancellationToken = default ( CancellationToken ) )
129
145
{
146
+ var isFiltered = ! string . IsNullOrEmpty ( filter ) ;
147
+
130
148
using ( var session = OpenSession ( ) )
131
149
using ( var transaction = session . BeginTransaction ( ) )
132
150
{
133
- if ( ! string . IsNullOrEmpty ( filter ) )
151
+ if ( isFiltered )
134
152
session . EnableFilter ( filter ) . SetParameter ( "name" , "Bob" ) ;
135
153
var rowCount =
136
154
await ( session
@@ -142,7 +160,19 @@ public async Task DmlDeleteAsync(bool filtered)
142
160
. ExecuteUpdateAsync ( cancellationToken ) ) ;
143
161
await ( transaction . CommitAsync ( cancellationToken ) ) ;
144
162
145
- Assert . That ( rowCount , Is . EqualTo ( string . IsNullOrEmpty ( filter ) ? 2 : 1 ) ) ;
163
+ Assert . That ( rowCount , Is . EqualTo ( isFiltered ? 1 : 2 ) , "ResultCount" ) ;
164
+ }
165
+
166
+ using ( var session = OpenSession ( ) )
167
+ using ( var transaction = session . BeginTransaction ( ) )
168
+ {
169
+ Assert . That (
170
+ await ( session . Query < MultiTableEntity > ( ) . CountAsync ( e => e . Name == "newName" , cancellationToken ) ) ,
171
+ Is . EqualTo ( isFiltered ? 1 : 2 ) , "Name == \" newName\" " ) ;
172
+ Assert . That (
173
+ await ( session . Query < MultiTableEntity > ( ) . CountAsync ( e => e . OtherName == "newOtherName" , cancellationToken ) ) ,
174
+ Is . EqualTo ( isFiltered ? 1 : 2 ) , "Name == \" newOtherName\" " ) ;
175
+ await ( transaction . CommitAsync ( cancellationToken ) ) ;
146
176
}
147
177
}
148
178
@@ -151,10 +181,12 @@ public async Task DmlDeleteAsync(bool filtered)
151
181
[ TestCase ( "OtherNameFilter" ) ]
152
182
public async Task MultiTableDmlDeleteAsync ( string filter , CancellationToken cancellationToken = default ( CancellationToken ) )
153
183
{
184
+ var isFiltered = ! string . IsNullOrEmpty ( filter ) ;
185
+
154
186
using ( var session = OpenSession ( ) )
155
187
using ( var transaction = session . BeginTransaction ( ) )
156
188
{
157
- if ( ! string . IsNullOrEmpty ( filter ) )
189
+ if ( isFiltered )
158
190
session . EnableFilter ( filter ) . SetParameter ( "name" , "Bob" ) ;
159
191
var rowCount =
160
192
await ( session
@@ -165,7 +197,19 @@ public async Task DmlDeleteAsync(bool filtered)
165
197
. ExecuteUpdateAsync ( cancellationToken ) ) ;
166
198
await ( transaction . CommitAsync ( cancellationToken ) ) ;
167
199
168
- Assert . That ( rowCount , Is . EqualTo ( string . IsNullOrEmpty ( filter ) ? 2 : 1 ) ) ;
200
+ Assert . That ( rowCount , Is . EqualTo ( isFiltered ? 1 : 2 ) , "ResultCount" ) ;
201
+ }
202
+
203
+ using ( var session = OpenSession ( ) )
204
+ using ( var transaction = session . BeginTransaction ( ) )
205
+ {
206
+ Assert . That (
207
+ await ( session . Query < MultiTableEntity > ( ) . CountAsync ( e => e . Name != "Bob" , cancellationToken ) ) ,
208
+ Is . EqualTo ( isFiltered ? 1 : 0 ) , "Name != \" Bob\" " ) ;
209
+ Assert . That (
210
+ await ( session . Query < MultiTableEntity > ( ) . CountAsync ( e => e . OtherName != "Bob" , cancellationToken ) ) ,
211
+ Is . EqualTo ( isFiltered ? 1 : 0 ) , "OtherName != \" Bob\" " ) ;
212
+ await ( transaction . CommitAsync ( cancellationToken ) ) ;
169
213
}
170
214
}
171
215
}
0 commit comments